[英]CSV file from a list with multiple dictionaries in Python?
我有以下形式的數據:
{'count': '274', 'file_type': 'json', 'limit': '100000', observation_end': '9999-12-31', 'observation_start': '1776-07-04', 'observations': "[{'date': '1947-01-01', 'realtime_start': '2015-08-20', 'realtime_end': '2015-08-20', 'value': '3.962'}, {'date': '1947-04-01', 'realtime_start': '2015-08-20', 'realtime_end': '2015-08-20', 'value': '4.052'}, {'date': '1947-07-01', 'realtime_start': '2015-08-20', 'realtime_end': '2015-08-20', 'value': '4.172'}, {'date': '1947-10-01', 'realtime_start': '2015-08-20', 'realtime_end': '2015-08-20', 'value': '4.270'}, {'date': '1948-01-01', 'realtime_start': '2015-08-20', 'realtime_end': '2015-08-20', 'value': '4.372'}, {'date': '1948-04-01', 'realtime_start': '2015-08-20', 'realtime_end': '2015-08-20', 'value': '4.432'}, {'date': '1948-07-01', 'realtime_start': '2015-08-20', 'realtime_end': '2015-08-20', 'value': '4.521'}]
我想從中創建CSV或Excel文件,以便在不同的行中顯示不同的值。 例如,數據1948-07-01的值為4521。是否可能?如何? 我嘗試了以下操作:
writer = csv.writer(open('dict.csv', 'wb'))
for key, value in mydict.items():
writer.writerow([key, value])
但是最后一行在單行中包含list的所有字典。
import ast # since your observations seems to be a string
a=your_dictionary
observations=ast.literal_eval(a["observations"]) # this will convert this string to list
headers=observations[0].keys()
writer = csv.writer(open('dict.csv', 'wb'))
writer.writerow(headers) # to make sure your headings are date,realtime_start etc
for data in observations:
row=[data[header] for header in headers] #will create the row in same order as headers
writer.writerow(row)
您必須先用鍵寫標題,然后再寫值。
鑒於您所有數據都具有相同的鍵,因此以下各項將起作用:
writer = csv.writer(open('dict.csv', 'wb'))
# retrieve the first dict to write the csv header:
header = data[0].keys()
writer.writerow(header)
# iterate over data:
for data in datas:
writer.writerow(data.values())
請記住使用collections.OrderedDict
來確保.keys
和.values
方法以相同的順序返回項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.