我有以下形式的字典列表:字典包含列表,但我得到「IndexError:列表索引超出範圍」當我試圖瞄準它
[{"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
請提供[MCVE] - 可複製粘貼以解釋並公開您的問題的內容。 –
您的csvWriter.writerow方法顯然期望列表的列表,因爲之前的所有內容都運行時沒有錯誤。您可以在調試器中查看它們,以確定它們與您的預期完全相同,直到那一刻。 –
也儘量不要使用類名作爲變量名。 –