【发布时间】:2019-06-24 01:49:42
【问题描述】:
我有一个带有 json 结构的 txt 文件。问题是该文件不仅包含 json 结构,还包含原始文本,例如日志错误:
2019-01-18 21:00:05.4521|INFO|Technical|Batch Started|
2019-01-18 21:00:08.8740|INFO|Technical|Got Entities List from 20160101 00:00 :
{
"name": "1111",
"results": [{
"filename": "xxxx",
"numberID": "7412"
}, {
"filename": "xgjhh",
"numberID": "E52"
}]
}
2019-01-18 21:00:05.4521|INFO|Technical|Batch Started|
2019-01-18 21:00:08.8740|INFO|Technical|Got Entities List from 20160101 00:00 :
{
"name": "jfkjgjkf",
"results": [{
"filename": "hhhhh",
"numberID": "478962"
}, {
"filename": "jkhgfc",
"number": "12544"
}]
}
我阅读了 .txt 文件,但尝试修补 jason 结构时出现错误: 在:
import json
with open("data.txt", "r", encoding="utf-8", errors='ignore') as f:
json_data = json.load(f)
输出:json.decoder.JSONDecodeError:额外数据:第 1 行第 5 列(字符 4)
我想打包 json 并保存为 csv 文件。
【问题讨论】:
-
是否每个非 json 行都以日期和时间开头?您可以使用正则表达式查找以
"{number}-{number}-{number} "开头的所有行并将它们之间的所有行传递给json.loads() -
第一行是日期时间,在每个 json 结构之间,它以字符 | 开头。然后是日期时间,如下所示:|2019-01-18 21:00:11.7022|INFO|技术|在 0.43 秒内获得 372245 的实体配置文件| 2019-01-18 21:00:11.8897|INFO|技术|获得实体 372514 的以下配置文件:{ 和另一个 json 结构开始 ...