注意:请查看已勾选答案的评论以获取解决方案:)
我正在写一些访问API的python,并将服务器的响应(JSON)导出到CSV文件。 JSON是嵌套的。
这是来自服务器的JSON响应(这只是响应的一个示例):
{
"id":182774,
"website_id":307842,
"engine_provider":"Google",
"engine_name":"United Kingdom",
"keywords":[
{
"id":4464443,
"groups_id":[
44424
],
"name":"SMART E70 Interactive Display",
"positions":{
"2017-03-16":10
}
},
{
"id":4464442,
"groups_id":[
44424
],
"name":"SMART Podium SP518",
"positions":{
"2017-03-16":4
}
},
{
"id":4464441,
"groups_id":[
44424
],
"name":"SMART Board M680",
"positions":{
"2017-03-16":3
}
},
{
"id":4464338,
"groups_id":[
51168
],
"name":"NEC Lamps",
"positions":{
"2017-03-16":4
}
}
]
}
如果JSON看起来不对,可能是因为我在为这篇文章采样时编辑错了。
在Python中,我尝试解析查询响应,然后将嵌套字段写入CSV表,如下所示:
parsedqueryresponse = queryresponse.json()
f = csv.writer(open(csvoutputpath, "wb+"))
f.writerow(["name", "positions", "id"])
for parsedqueryresponse in parsedqueryresponse:
f.writerow([parsedqueryresponse["keywords"]["name"],
parsedqueryresponse["keywords"]["positions"],
parsedqueryresponse["keywords"]["id"]])
当我运行脚本时,我收到此错误:
" 第146行,in f.writerow([parsedqueryresponse ["关键字"] ["名称&#34], TypeError:字符串索引必须是整数"
第146行是这一行(也由错误消息引用):
f.writerow([parsedqueryresponse["keywords"]["name"]
我在这里做错了什么?我尝试更改JSON字段以使用'而不是"但这似乎没有让事情变得更好......
答案 0 :(得分:1)
请试试这个,
import csv
import json
parsedqueryresponse = queryresponse.json()
f = csv.writer(open(csvoutputpath, "wb+"))
f.writerow(["name", "positions", "id"])
for entry in parsedqueryresponse["keywords"]:
f.writerow([entry["name"],
entry["positions"],
entry["id"]])
<强>输出:强>
name,positions,id
SMART E70 Interactive Display,{2017-03-16: 10},4464443
SMART Podium SP518,{2017-03-16: 4},4464442
SMART Board M680,{2017-03-16: 3},4464441
NEC Lamps,{2017-03-16: 4},4464338
如有疑问,请随时告诉我。