使用json.load读取txt文件报错,寻求技术解决方案
排查json.load解析文件报错的问题
嘿,我来帮你搞定这个头疼的JSON解析问题!先看看你的代码:
import json f=open("99_jiayi.txt",'r',encoding = 'utf-8-sig') a=json.load(f) f.close()
既然同格式的另一个文件能正常运行,那大概率是当前的99_jiayi.txt存在隐藏的格式或编码问题,咱们一步步来排查:
第一步:先捕获具体的错误信息
先给代码加个try-except块,看看JSON解析到底卡在哪了,这能帮我们精准定位问题:
import json try: with open("99_jiayi.txt", 'r', encoding='utf-8-sig') as f: a = json.load(f) except json.JSONDecodeError as e: print(f"解析出错啦:{e}") print(f"错误位置:第{e.lineno}行,第{e.colno}列") except Exception as e: print(f"其他错误:{e}")
从你提供的截图里,我们能看到报错的细节:

常见的问题及解决办法
1. 编码不匹配问题
虽然你用了utf-8-sig,但如果文件实际是用其他编码(比如GBK、UTF-16)保存的,就会出现解析错误。可以试试换编码读取:
# 尝试用GBK编码读取 with open("99_jiayi.txt", 'r', encoding='gbk') as f: content = f.read() print(content) # 看是否能正常显示中文
2. JSON语法不规范
JSON对格式要求非常严格,哪怕一个多余的逗号、全角引号、未转义的特殊字符都会报错:
- 检查文件里是否有全角的逗号/引号(比如“,”而不是“,”)
- 检查数组/对象最后一个元素后面是否多了逗号
- 检查字符串里的特殊字符(比如换行、双引号)是否转义了(比如用
\"代替")
3. 文件是JSON Lines格式(每行一个JSON对象)
如果你的文件是每行一个独立的JSON对象(而不是一个完整的数组/对象),那json.load就会报错,这时候得逐行解析:
data_list = [] with open("99_jiayi.txt", 'r', encoding='utf-8-sig') as f: for line in f: line = line.strip() if line: # 跳过空行 data_list.append(json.loads(line))
小技巧:先用在线工具验证JSON格式
把文件内容复制到JSON校验工具里,能快速找出语法错误的位置,帮你节省排查时间。
内容的提问来源于stack exchange,提问作者楊子右
相关产品推荐
相关产品推荐

