我有一个包含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'}}