python - 解析 JSON - print 有效,但 append 无效
问题描述
我有一个包含一堆 JSON 对象的文件。我尝试逐个对象解析,试图获得id_str
唯一的。当我打印时,它可以工作(每行一个 id_str)。但是,当我尝试将它附加到列表时,它给了我一个 KeyError id_str。所以我不确定为什么它在打印时有效,但在附加时无效。
import zipfile
id_list = []
with open("sample.json", "r") as zip:
for i in zip:
jobj = json.loads(i)
print(jobj["id_str"]) # this prints each id (works)
id_list.append(jobj["id_str"]) # same as above, but appends to list (KeyError id_str)
带有 JSON 对象的文件示例:
{
"truncated": false,
"contributors": null,
"reply_count": 0,
"retweeted": false,
"in_reply_to_status_id_str": null,
"source": "<a href=\"omitted_link" rel=\"nofollow\">Twitter for Android</a>",
"in_reply_to_screen_name": null,
"id": 1234272705391874048,
"retweet_count": 0,
"filter_level": "low",
"id_str": "1234272705391874048",
"in_reply_to_user_id": null,
"in_reply_to_status_id": null,
"lang": "tr",
"favorited": false,
"favorite_count": 0,
"coordinates": null,
"in_reply_to_user_id_str": null,
"created_at": "Mon Mar 02 00:21:59 +0000 2020",
"timestamp_ms": "1583108519300",
"text": "\u00d6yle sevdim ki seni beni g\u00f6ren herkes yerinde olmak istedi.",
"quote_count": 0,
"geo": null,
"is_quote_status": false
}
{
"truncated": true,
"contributors": null,
"reply_count": 0,
"retweeted": false,
"in_reply_to_status_id_str": null,
"source": "<a href=\"omitted_link" rel=\"nofollow\">pywws</a>",
"in_reply_to_screen_name": null,
"id": 1234268093091926016,
"retweet_count": 0,
"filter_level": "low",
"id_str": "1234268093091926016",
"in_reply_to_status_id": null,
"lang": "en",
"favorited": false,
"favorite_count": 0,
"in_reply_to_user_id_str": null,
"created_at": "Mon Mar 02 00:03:39 +0000 2020",
"timestamp_ms": "1583107419642",
"text": "Sunday 01 March 2020\n23:58 GMT\nTemperature: 1.6\u00b0C\nWind: S, 0 mph (ave), 5 mph (gust)\nHumidity: 95%\nRain (today): 0.\u2026 omitted_link",
"in_reply_to_user_id": null,
"quote_count": 0,
"geo": {
"type": "Point",
"coordinates": [52.417, -1.442]
},
"is_quote_status": false
}
解决方案
嘿@Knovolt我用re模块做了你在这里做的事情,并在你的样本上进行了测试,它有效,所以测试一下
import re
with open ('sample.json','r') as reader :
Readed = reader.readlines()
for item in Readed :
if re.findall('"id_str"',item) :
with open ('IDS_YOU_WANTED.txt','a') as writer :
writer.write(item)
推荐阅读
- computer-vision - 如何计算线扫描相机的景深(DOF)
- asp.net-mvc - 导入时出现 Angular 5 HttpClientModule 控制台错误
- c# - C# UI 测试被忽略并且没有运行?
- c - 如何在 Makefile 中复制文件并创建目录?
- node.js - GraphQL 嵌套查询返回 null
- python - SQLAlchemy:bytearray-upload 最终在 DB 中为 NULL
- vue.js - 变量作为 vee validate v-validate 指令值
- symfony - 由树枝自动排序的日期列
- ruby-on-rails - 动态覆盖 Rails 中所有 Logger 输出的目标文件
- visual-studio - Github 扩展的 Visual Studio 快捷方式