我有一个在线数据,格式如下:
{"headers": {"ai5": "3356", "debug": null, "random": null, "sd": "7.6"}, "post": {"event": "ggstart", "ts": "1462"}, "params": {}, "bottle": {"timestamp": "2016-05-09 02:00:00.033775", "game_id": "55107008"}}
{"headers": {"ai5": "8fa6", "debug": null, "random": null, "sd": "7.6"}, "post": {"event": "ggstart", "ts": "1475"}, "params": {}, "bottle": {"timestamp": "2016-05-09 02:00:00.004906", "game_id": "55107008"}}我希望我必须将每一行都视为JSON格式来读取,并不断将它们添加到最终数据中:
data = []
with open('new.json') as f:
for line in f:
print(line)
data.append(json.loads(line))但是我收到了错误:
JSONDecodeError: Expecting value: line 2 column 1 (char 1)有人能帮我理解一下我在这里遗漏了什么重点吗?
发布于 2017-04-14 22:48:59
这是因为您的文件中的中间行。它不是一个有效的json (实际上是一个空行),因此您将面临这个错误。
修复:
import json
data = []
with open('test.txt') as f:
for line in f:
try:
data.append(json.loads(line.strip()))
except ValueError:
pass
print(data)输出:
[{
'post': {
'event': 'ggstart',
'ts': '1462'
},
'bottle': {
'timestamp': '2016-05-09 02:00:00.033775',
'game_id': '55107008'
},
'headers': {
'debug': None,
'sd': '7.6',
'random': None,
'ai5': '3356'
},
'params': {}
},
{
'post': {
'event': 'ggstart',
'ts': '1475'
},
'bottle': {
'timestamp': '2016-05-09 02:00:00.004906',
'game_id': '55107008'
},
'headers': {
'debug': None,
'sd': '7.6',
'random': None,
'ai5': '8fa6'
},
'params': {}
}]https://stackoverflow.com/questions/43413692
复制相似问题