2016-11-16 44 views
1

我想用这样的权限读取一个谷歌的稿纸:DictReader错误:预期字符串或Unicode对象列表中找到

opener = urllib2.build_opener() 
    opener.addheaders = [('Accept-Charset', 'utf-8')] 
    response = opener.open(
     "https://docs.google.com/spreadsheets/d/ID/export?format=csv" 
    ) 
    csv_records = unicodecsv.reader(response, encoding='utf-8') 
    translations = csv.DictReader(csv_records) 
    for row in translations: 
     print row["age"] 

但是,我得到一个错误:expected string or Unicode object, list found可能的字段名。

怎么了?

堆栈跟踪

File "/Users/me/projects/ad_copy.py", line 68, in create_copies 
    for row in translations 
    File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/csv.py", line 107, in next 
    self.fieldnames 
    File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/csv.py", line 90, in fieldnames 
    self._fieldnames = self.reader.next() 
TypeError: expected string or Unicode object, list found 

打印

print translations 
print csv_records 
<csv.DictReader instance at 0x11163fa28> 
<unicodecsv.py2.UnicodeReader object at 0x11160da50> 
+0

发布堆栈跟踪请 –

+0

您是否试图打印一些调试信息,如翻译或数据? – rocksteady

+0

刚刚发布堆栈跟踪 – Dejell

回答

0

据我了解,unicodecsv返回一个列表,你的情况csv_records

这是从github README采取:

>>> import unicodecsv as csv 
>>> from io import BytesIO 
>>> f = BytesIO() 
>>> w = csv.writer(f, encoding='utf-8') 
>>> _ = w.writerow((u'é', u'ñ')) 
>>> _ = f.seek(0) 
>>> r = csv.reader(f, encoding='utf-8') 
>>> next(r) == [u'é', u'ñ'] 
True 

参见在结束时比较。

您将此返回列表放入csv.DictReader(),这不是必需的,因为结果已在csv_records之内。

打印出这个变量,看看里面是什么。

相关问题