我有一个数据文件,格式是这样的
{"Name":"David","Age":"14","Score":[0,1]}
{"Name":"Jason","Age":"12","Score":[0,0]}
我的问题是: 1)我如何阅读此文件并转换为CSV
Name,Age,Score
David,14,0/1
Jason,12,0
2)如何将[0,1]转换为0/1,[0,0]为0,表示当分母为零时,结果为0,否则,取第1个数除以[]
中的第二个数字谢谢!
答案 0 :(得分:4)
首先,数据似乎是JSON编码的,因此您可以使用json
模块将其读入字典列表:
import json
with open('input') as f:
dicts = [json.loads(line) for line in f]
对于您的示例数据,dicts
将设置为:
>>> from pprint import pprint
>>> pprint(dicts)
[{u'Age': u'14', u'Name': u'David', u'Score': [0, 1]},
{u'Age': u'12', u'Name': u'Jason', u'Score': [0, 0]}]
更新分数(假设您确实想要进行分割):
for d in dicts:
score = d['Score']
d['Score'] = score[0]/score[1] if score[1] != 0 else 0
#d['Score'] = '{}/{}'.format(score[0], score[1]) if score[1] != 0 else '0'
(以上行将生成除法操作的文本版本,如果这是想要的那样)
接下来,您可以使用csv.DictWriter
对象将输出写入CSV文件。
import csv
with open('output', 'w') as f:
writer = csv.DictWriter(f, fieldnames=['Age', 'Name', 'Score'])
writer.writeheader()
writer.writerows(dicts)
最后,您的输出文件应包含:
Age,Name,Score 14,David,0 12,Jason,0
答案 1 :(得分:0)
您应该首先学习如何打开文件并阅读行
之后学习如何使用特定格式提取字符串的子串
然后学习如何在文件中写入
使用这些链接,我认为您可以尝试一些并返回此处并使用您的代码创建一个问题。没有你自己的代码,你要我们为你编程。