[英]Converting JSON into CSV using python
我有JSON数据:
u'{"result":[{"timestamp":1356843600000,"values":{"stream:sentimentNeutral":0}},{"timestamp":1356930000000,"values":{"stream:sentimentNeutral":15672}},{"timestamp":1357016400000,"values":{"stream:sentimentNeutral":13646}},{"timestamp":1357102800000,"values":{"stream:sentimentNeutral":14301}
现在,需要将其写入新的csv文件。 我得到了“响应”为JSON
response = requests.get(end_point,params=query_params);
# pprint.pprint(response.text)
data = json.loads(response.text)
f=csv.writer(open('test_1.csv','wb+'))
for item in data['result']:
f.writerow(item['timestamp']['stream:sentimentNeutral'].values())
我得到这个错误
Traceback (most recent call last):
File "G:\Python\codevOne.py", line 26, in <module>
f.writerow(item['timestamp']['stream:sentimentNeutral'].values())
TypeError: 'long' object has no attribute '__getitem__'
>>>
请更正我的错误。我觉得我正在努力遍历字典中的某个字典。 我期望的结果是一个名为“ test.csv”的文件,其中包含一个时间戳记行和相应的stream:sentimentNeutral值
编辑:添加完整测试的源代码这可以完成这项工作(如果我正确理解了您想要的内容):
for item in data['result']:
f.writerow((item['timestamp'], item['values']['stream:sentimentNeutral']))
它提供了一个由以下几行组成的csv文件timestamp, stream:sentimentNeutral
这是对您的数据的完整测试:
import pprint
import csv
import json
resp = u'{"result":[{"timestamp":1356843600000,"values":{"stream:sentimentNeutral":0}},{"timestamp":1356930000000,"values":{"stream:sentimentNeutral":15672}},{"timestamp":1357016400000,"values":{"stream:sentimentNeutral":13646}},{"timestamp":1357102800000,"values":{"stream:sentimentNeutral":14301}}]}'
data = json.loads(resp)
pprint.pprint(data)
with open('test_1.csv','wb+') as fd:
f = csv.writer(fd)
for item in data['result']:
f.writerow((item['timestamp'], item['values']['stream:sentimentNeutral']))
pprint
的输出是:
{u'result': [{u'timestamp': 1356843600000L,
u'values': {u'stream:sentimentNeutral': 0}},
{u'timestamp': 1356930000000L,
u'values': {u'stream:sentimentNeutral': 15672}},
{u'timestamp': 1357016400000L,
u'values': {u'stream:sentimentNeutral': 13646}},
{u'timestamp': 1357102800000L,
u'values': {u'stream:sentimentNeutral': 14301}}]}
这是test_1.csv
的内容
1356843600000,0
1356930000000,15672
1357016400000,13646
1357102800000,14301
因为在您的代码item['timestamp']
是一个数字值,例如,在第一个循环中,所以它的值为1356843600000,而不是dict。
您应该使用:
for item in data['result']:
timestamp = item['timestamp']
value = item['values']['stream:sentimentNeutral']
f.writerow([timestamp, value])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.