[英]Python write multiline data in a column of a single row in csv
我有一個類似於dt1的json響應,我正在將json數據寫入具有字段名NAME,Total和details的CSV中,下面是我的代碼。
dt1 = { u'Name': ABC,
u'total': 6 ,
u'Details':{
u'Subject1': {u'Opted': False, u'value': u'100'},
u'Subject2': {u'Opted': True, u'value': u'200'},
u'Subject2': {u'Opted': True, u'value': u'200'}
}
}
with open('file.csv', 'w') as csvfile:
fieldnames = ['Name', 'Total', 'Details']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
dt2 = dt1.values()[0].keys(
for key in dt1.keys():
if dt1[key]['detected'] is True)
writer.writerow({'NAME': dt1['Name'], 'Total' : dt1['Total'], 'Details': ([key, [dt1[key][scan] for scan in dt2]])})
CSV生成為:
NAME Total Detail
ABC 6 Subject1, "[u'Opted': False, u'value': u'100']"
ABC 6 Subject2, "[u'Opted': True, u'value': u'200']"
ABC 6 Subject3, {u'Opted': True, u'value': u'500'}
我想將詳細信息字典的多行數據寫到單列中,如下所示。 名稱和總計不會對每個主題重復。 有可能嗎? 我如何實現它。
NAME Total Details
ABC 6 Subject1, "[u'Opted': False, u'value': u'100']"
Subject2, "[u'Opted': True, u'value': u'200']"
Subject3, {u'Opted': True, u'value': u'500'}
嘗試這樣的事情:
import csv
dt1 = {
u'Name': 'ABC',
u'Total': 6 ,
u'Details':{
u'Subject1': {u'Opted': False, u'value': u'100'},
u'Subject2': {u'Opted': True, u'value': u'200'},
u'Subject3': {u'Opted': True, u'value': u'200'}
}
}
with open('file.csv', 'w') as csvfile:
fieldnames = ['Name', 'Total', 'Details']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
first_detail = True
for k in dt1['Details']:
if first_detail:
writer.writerow({'Name': dt1['Name'], 'Total' : dt1['Total'],
'Details': k + ',' + str(dt1['Details'][k])})
first_detail = False
else:
writer.writerow({'Name': None, 'Total' : None,
'Details': k + ', ' + str(dt1['Details'][k])})
file.csv:
Name,Total,Details
ABC,6,"Subject3, {'value': '200', 'Opted': True}"
,,"Subject2, {'value': '200', 'Opted': True}"
,,"Subject1, {'value': '100', 'Opted': False}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.