Tôi đang chơi với cả việc học python và cố gắng đưa các vấn đề về github thành một dạng có thể đọc được. Sử dụng lời khuyên về Làm cách nào tôi có thể chuyển đổi JSON sang CSV? Tôi nghĩ ra cái này:
import json
import csv
f=open('issues.json')
data = json.load(f)
f.close()
f=open("issues.csv","wb+")
csv_file=csv.writer(f)
csv_file.writerow(["gravatar_id","position","number","votes","created_at","comments","body","title","updated_at","html_url","user","labels","state"])
for item in data:
csv_file.writerow([item["gravatar_id"], item["position"], item["number"], item["votes"], item["created_at"], item["comments"], item["body"], item["title"], item["updated_at"], item["html_url"], item["user"], item["labels"], item["state"]])
Trong đó "problems.json" là tệp json chứa các vấn đề github của tôi. Khi tôi cố chạy nó, tôi nhận được
File "foo.py", line 14, in <module>
csv_file.writerow([item["gravatar_id"], item["position"], item["number"], item["votes"], item["created_at"], item["comments"], item["body"], item["title"], item["updated_at"], item["html_url"], item["user"], item["labels"], item["state"]])
TypeError: string indices must be integers
Tôi đang thiếu gì ở đây? Đó là "chỉ số chuỗi"? Tôi chắc chắn rằng một khi tôi làm việc này tôi sẽ có nhiều vấn đề hơn, nhưng bây giờ, tôi chỉ thích làm việc này!
Khi tôi điều chỉnh for
câu lệnh thành đơn giản
for item in data:
print item
những gì tôi nhận được là ... "các vấn đề" - vì vậy tôi đang làm điều gì đó sai cơ bản hơn. Đây là một chút json của tôi:
{"issues":[{"gravatar_id":"44230311a3dcd684b6c5f81bf2ec9f60","position":2.0,"number":263,"votes":0,"created_at":"2010/09/17 16:06:50 -0700","comments":11,"body":"Add missing paging (Older>>) links...
Khi tôi in, data
có vẻ như nó đang bị mung rất kỳ quặc:
{u'issues': [{u'body': u'Add missing paging (Older>>) lin...
print repr(data)
hoặcimport pprint; pprint.pprint(data)