我想一個文件(不是真的JSON)轉換成csv文件,這裏是代碼轉換JSON到CSV
import json
import gzip
import csv
def parse(path):
g = gzip.open(path, 'r')
for l in g:
yield json.dumps(eval(l))
csvOut = gzip.open("meta_Musical_Instruments.csv", 'w')
writer = csv.writer(csvOut)
fields = ["asin"]
for product in parse("meta_Musical_Instruments.json.gz"):
line = []
for f in fields:
if product.has_key(f): line.append(product[f])
else: line.append("")
writer.writerow(line)
示例文件是這樣的:
{'asin': '0014072149', 'related': {'also_viewed': ['B0058DK7RA'], 'buy_after_viewing': ['B0058DK7RA']}, 'title': 'Double Concerto in D Minor By Johann Sebastian Bach. Edited By David Oistrach. For Violin I, Violin Ii and Piano Accompaniment. Urtext. Baroque. Medium. Set of Performance Parts. Solo Parts, Piano Reduction and Introductory Text. BWV 1043.', 'price': 18.77, 'salesRank': {'Musical Instruments': 94593}, 'imUrl': 'http://ecx.images-amazon.com/images/I/41m6ygCqc8L._SY300_.jpg', 'brand': '', 'categories': [['Musical Instruments']], 'description': 'Composer: J.S. Bach.Peters Edition.For two violins and pianos.'}
後,我執行代碼,我得到這個錯誤消息:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-14-1cb41fc12b41> in <module>()
16 line = []
17 for f in fields:
---> 18 if product.has_key(f): line.append(product[f])
19 else: line.append("")
20 writer.writerow(line)
AttributeError: 'str' object has no attribute 'has_key'
請幫助!
'json.dumps(eval(l))'什麼是什麼? –
請提取一個最簡單的例子。硬編碼的文件內容。 –
呃,問題是......最明顯的。我喜歡瞭解提問者有時在想什麼,以便我可以給出完整的答案。 –