我有一个包含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之前的方形barrackts而失败。
当我尝试运行以下代码时:
import json
for row in df['ColumnName']:
x = json.loads(row)
print x
我收到以下错误:
{" TS":" 2017-11-19T11:11:01.394"" V" {"路径&#34 ;: " d:\的Tableau Extract \ Logs \ log.txt"}} Extract \ Logs \ log.txt"}} TypeError:expected 字符串或缓冲区
请注意,Python会打印第一行,但在另一行上会失败。 有任何建议如何处理这种不一致?
我正在使用带有Jupyter Notebook的Python 2.7。
谢谢, 阿萨夫
答案 0 :(得分:1)
这里有一些"维修"只需删除括号即可显示第2行中的字符串。它在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'}}