字典包含列表,但我得到了“IndexError:list index out of range'当我试图瞄准它时

时间:2017-01-17 23:00:56

标签: python python-2.7

我有一个表格的词典列表:

[{"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

2 个答案:

答案 0 :(得分:0)

cscWriter.writerow的参数应该是列表列表。 https://docs.python.org/2/library/csv.html 如果要编码,请使用:     dict ["作者"] [0] .encode(' utf-8')

答案 1 :(得分:0)

找出问题。

我的json文件中隐藏着空列表。起初我没有看到它们,但我的程序找到了它们。这个问题已经解决了