json.loads不支持带有BOM的TXT,
比如用记事本写上{'test':123},然后另存为,选择utf-8编码方式。
PYTHON中输入以下代码
import json
with open(r'test.txt', 'r') as f:
for line in f.readlines():
lstProxies.append(json.loads(line))
运行就会提示错误:
ValueError: No JSON object could be decoded
详情:
UTF- 8编码的文件中,BOM占三个字节。如果用记事本把一个文本文件另存为UTF-8编码方式的话,用UE打开这个文件,切换到十六进制编辑状态就可以看到开 头的EF BB BF了
如果需要去掉BOM,那么可以
#去掉单行的BOM
with open('nicks-chinese.txt', 'r') as f:
for line in f.readlines():
if line[:3] == '\xef\xbb\xbf':
line = line[3:]
#或者去掉整个content的BOM
with open('nicks-chinese.txt', 'r') as f:
content=f.read()
if content[:3] == '\xef\xbb\xbf':
content = content[3:]