对于JSON.LOADS问题循环



我有一个包含2个JSON的文件(log.txt) - 每行中一个:

{"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之前的方形式式式式式式式式支架而失败。

当我尝试运行以下代码时:

import json
for row in df['ColumnName']:
    x = json.loads(row)
    print x

我有以下错误:

{" TS":" 2017-11-19T11:11:01.394"," V":{" path":" d: tableau 提取 logs log.txt"}}提取 字符串或缓冲区

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

我正在使用jupyter笔记本的Python 2.7。

谢谢asaf

这是一些代码,可以通过简单地卸下支架来"修复"第二行中的字符串。它可以在Python 2和Python 3中使用给定的数据,但可能会在更复杂的数据上失败。

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输出

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

最新更新