For循环json.loads发行

2024-04-19 22:24:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有档案(日志.txt)包含2个JSON-每行一个:

{"ts":"2017-11-19T11:11:01.394","v":{"path":"D:\\Tableau Extract\\Logs\\log.txt"}}
{"ts":"2017-11-19T11:11:01.394",["v":{"path":"D:\\Tableau Extract\\Logs\\log_bk.txt"]}}

我尝试迭代每一行并将其作为JSON格式读取,但是,当循环到达第二行时,由于JSON前面的方形barracks而失败。在

尝试运行以下代码时:

^{pr2}$

我得到以下错误:

{"ts":"2017-11-19T11:11:01.394","v":{"path":"D:\Tableau Extract\Logs\log.txt"}}Extract\Logs\log.txt"}} TypeError: expected string or buffer

请注意,Python确实打印了第一行,但在另一行则失败。 如何处理这种不一致有什么建议吗?在

我正在使用python2.7和Jupyter笔记本。在

谢谢, 反卫星


Tags: path代码txtlogjson格式extract档案
1条回答
网友
1楼 · 发布于 2024-04-19 22:24:54

下面是一些代码,通过简单地删除括号“修复”第二行中的字符串。它可以在python2和python3中使用给定的数据,但在更复杂的数据上可能会失败。在

import json

data = r'''
{"ts":"2017-11-19T11:11:01.394","v":{"path":"D:\\Tableau Extract\\Logs\\log.txt"}}
{"ts":"2017-11-19T11:11:01.394",["v":{"path":"D:\\Tableau Extract\\Logs\\log_bk.txt"]}}
'''.splitlines()

for row in data:
    if not row:
        continue
    row = row.replace('[', '').replace(']', '')
    d = json.loads(row)
    print(d)

Python 2输出

^{pr2}$

相关问题 更多 >