[英]Python TypeError: '_csv.writer' object is not iterable
我正在將 json 解析為 csv。 但我收到如下錯誤:
for i in data:
TypeError: '_csv.writer' object is not iterable
代碼:
import json
import csv
with open("Data.json", 'r') as file:
data = json.load(file)
CSV_File = 'Data.csv'
with open(CSV_File, 'w') as file:
data = csv.writer(file)
data.writerow([])
for i in data:
data.writerow([])
數據
{“id”:“kljhfksdhkhd”,“名稱”:“BOB”,“生日”:“08/03/1993”,“語言”:[ {“id”:“106059522759137”,“名稱”:“英語" }, { "id": "107617475934611", "name": "泰盧固語" }, { "id": "112969428713061", "name": "印地語" }, { "id": "343306413260", "名稱”:“泰米爾語”},{“id”:“100904156616786”,“名稱”:“卡納達語”}],“游戲”:{“數據”:[{“名稱”:“現代戰斗”,“id ": "12134323", "created_time": "2019-02-21T18:39:41+0000" }, { "name": "卡片", "id": "343232", "created_time": "2011-06 -01T11:13:31+0000" }, { "name": "穿梭羽毛球", "id": "43214321", "created_time": "2011-06-01T11:13:31+0000" }, {"名稱”:“卡羅姆”,“id”:“49y497”,“created_time”:“2011-06-01T11:13:31+0000”},{“名稱”:“國際象棋”,“id”:“0984080830” , "created_time": "2011-06-01T11:13:31+0000" } ], "paging": { "cursors": { "before": "dkkskd", "after": "dlldlkd" } } } }
首先,名稱data
已分配給兩個不同的對象。 Python 允許此每個分配覆蓋前一個。 在代碼中, data
最初是來自 json 文件的數據,然后是csv.writer
實例。 因此,一個明智的改進是將作者命名為writer
並相應地更改代碼:
import json
import csv
with open("Data.json", 'r') as file:
data = json.load(file)
CSV_File = 'Data.csv'
with open(CSV_File, 'w') as file:
writer = csv.writer(file)
writer.writerow([])
for i in data:
writer.writerow([])
現在讓我們處理如何寫入文件。 writer.writerow
需要一個列表,但寫一個空列表: writer.writerow([])
不是很有用。 可能你想將 json 數據寫入 csv 文件,所以 leet 去掉空列表,縮進寫入循環,使其位於with
塊內(否則文件將被關閉)。
import json
import csv
with open("Data.json", 'r') as file:
data = json.load(file)
CSV_File = 'Data.csv'
with open(CSV_File, 'w') as file:
writer = csv.writer(file)
for row in data:
writer.writerow(row)
如果 json 數據是列表列表,這將起作用,它看起來像這樣:
[[...], [...], [...], ...]
因為外部列表的每個元素都是一個列表,所以對其進行迭代( for row in data:
:)會產生一個列表, writer.writerow
可以處理該列表。 然而,json 數據采用字典形式的情況並不少見:
{"k1": [....], "k2": [...], "k3": [...], ...}
在這種情況下,您可能希望遍歷字典的values ,如果它們是列表:
for row in data.values():
writer.writerow(row)
最后,json 可能是列表和字典的不規則混合,可以任意嵌套。 由您決定如何將 map 嵌套的 json 數據轉換為平面 csv 格式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.