我创建了一个JSON文件,其中包含我流式传输的推文。该文件有多个词典,即每个推文一个。当我尝试读取此文件时
json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 3419)
此位置是新记录/推文/字典的开始位置。 我该如何解决这个问题?我尝试查找类似的答案,但它们与我的问题无关。 如何读取此文件?我是否以错误的方式存储它?
这是JSON文件:
{"created_at": "Thu Jul 18 12:06:44 +0000 2019", "id": 1151825627051257856, "id_str": "1151825627051257856", "text": "@godhoonbey @cuttingedge2019 Unparalleled greed for power to loot on display in Karnataka in history of India. Did\u2026 ", "display_text_range": [29, 140], "source": "<a href=\"" rel=\"nofollow\">Twitter for Android</a>", "truncated": true, "in_reply_to_status_id": 1151797702419787778, "in_reply_to_status_id_str": "1151797702419787778", "in_reply_to_user_id": 840249609368797186,
.
.
.
.
"lang": "en", "timestamp_ms": "1563451604031"
}
{
# another tweet content
}
答案 0 :(得分:2)
因此,您的文件不是完全有效的JSON。
您需要用[
和]
包裹起来,使其成为一个大列表,并在每个文档后添加逗号(以将它们分开)。
如果(且仅当)每个文档都位于其自己的一行中(我认为是因为错误位于line 2 column 1
上),您可以使用json.loads
逐行对其进行解析,例如这个:
import json
def parse_data(filename):
for l in open(filename, 'r'):
yield json.loads(l)
data = list(parse_data(filename))
但是,您真的应该像我最初建议的那样将其包装在一个大列表中,从而使其成为有效的JSON。