我有一个表格的词典列表:
[{"Title": ["Harry Potter"], "Author": ["J.K.Rowling"]},
{"Title": ["Lord of the Rings"], "Author": ["J.R.R. Tolkien"]}]
我尝试使用以下代码将其写入csv文件:
for dic in lis:
title = dict["Title"][0]
author = dict["Author"][0]
csvWriter.writerow([title, author])
但是我得到一个IndexError,说我的列表索引超出了范围。但是如果我从我的dict [" Title"]中删除了[0] ...那么它会将一个列表放入我的csv文件中。
如果我尝试对项目进行编码,那就更加令人困惑了:
dict["Author"].encode('utf-8')
它表示类似,"列表对象没有方法,解码()"
这绝对是一个清单...所以为什么我会收到这个错误?
我正在使用python 2.7
编辑:
所以这个例子是我实际处理的简化版本。我使用scrapy抓取了一个网站,并返回了一个json文件。解码时,json文件是一个包含字典的列表,其中包含更多列表。
items.json:
[{"Title": ["Harry Potter"], "Author": ["J.K.Rowling"]},
{"Title": ["Lord of the Rings"], "Author": ["J.R.R. Tolkien"]}]
我的代码:
import json
import csv
with open('items.json', 'r') as f:
op = f.read()
json = json.loads(op)
with open("data.csv", "wb") as f:
csvWriter = csv.writer(f)
csvWriter.writerow(['title', 'author'])
for dic in json:
title = dic['Title'][0]
author = dic['Author'][0]
csvWriter.writerow([title, author])
当我运行此代码时,我得到IndexError
答案 0 :(得分:0)
cscWriter.writerow的参数应该是列表列表。 https://docs.python.org/2/library/csv.html 如果要编码,请使用: dict ["作者"] [0] .encode(' utf-8')
答案 1 :(得分:0)
找出问题。
我的json文件中隐藏着空列表。起初我没有看到它们,但我的程序找到了它们。这个问题已经解决了