2016-11-16 42 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之內。

打印出這個變量,看看裏面是什麼。

相關問題