【发布时间】:2017-09-02 19:19:03
【问题描述】:
注意:请查看已勾选答案的 cmets 以获取解决方案:)
我正在编写一些 python 来访问 API 并将服务器的响应 (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 行,在 f.writerow([parsedqueryresponse["keywords"]["name"], TypeError: 字符串索引必须是整数"
第 146 行是这一行(也被错误消息引用):
f.writerow([parsedqueryresponse["keywords"]["name"]
我在这里做错了什么?我尝试将 JSON 字段更改为使用 ' 而不是 " 但这似乎并没有让事情变得更好......
【问题讨论】:
-
可能'parsedqueryresponse'是一个字符串
标签: python json api csv parsing