最开始是用
with open(path
) as f
:
data
= json
.loads
(f
)
然后报错TypeError: Input string must be text, not bytes
尝试1,加上解码:
with open(path
, encoding
='utf-8') as f
:
data
= json
.loads
(f
)
仍报错TypeError: Input string must be text, not bytes
尝试2,读取每行:
with open(path
, encoding
='utf-8') as f
:
data
= [json
.loads
(line
) for line
in f
]
报错JSONDecodeError: Expecting property name enclosed in double quotes or '}'
这时候,我们知道,肯定是json file里面有些“非法”字符需要删除。
最终尝试,使用nested replace去除“非法”字符:
with open(gentle_file
, encoding
='utf-8') as f
:
tmp
= f
.read
().replace
('\t','').replace
('\n','').replace
(',}','}').replace
(',]',']')
data
= json
.loads
(tmp
)
成功!