Python读取含反斜杠的JSON文件报错,如何正常读取并访问数据?
JSON文件含未转义反斜杠导致Python读取失败的解决办法
问题背景
给定的JSON文件中,STOK_TEXT字段包含未正确转义的反斜杠(如7\\"),导致标准JSON解析失败。使用常规json.load()读取时触发错误,需要修复后才能正常访问数据。
JSON内容:
{"Status":"OK","isSuccess":true,"Error":"","Data":[{"STOK_KODU":"REMA-50100","BR1_PAYDA":1,"MARKA":"REMARK","URETICI_KODU":"50100","KDV_ORANI":18.0,"STOK_DURUM":"3ARA","IMG":1,"STOK_TEXT":"REM03@FAN MOTORU 24VANELI 7\\"@@ REMARK@ @@ XRFM1103@ 009 2985@ 2394009@ RF03","ORAN1":43.00000000,"ORAN2":7.00000000,"ORAN3":0.00000000,"ORAN4":0.0,"ORAN5":0.0,"ORAN6":0.0,"ORAN7":0.0,"SATIS1":9067.9},{"STOK_KODU":"REMA-03","BR1_PAYDA":1,"MARKA":"REMARK","URETICI_KODU":"503","KDV_ORANI":18.0,"STOK_DURUM":"3ARA","IMG":1,"STOK_TEXT":"R103@MARS MOTORU 24V75 KW DELC955 D STR3@@ REMARK@ @TYERA/BR23/ @ XRE0103@ @ 2313@ 50103","ORAN1":43.00000000,"ORAN2":7.00000000,"ORAN3":0.00000000,"ORAN4":0.0,"ORAN5":0.0,"ORAN6":0.0,"ORAN7":0.0,"SATIS1":9067.9}]}
尝试的Python代码:
import json with open("4.json", encoding="utf8") as file: reader = json.load(file) print(reader["Status"])
解决方法
1. 预处理文本修复转义
先读取文件内容,将未转义的反斜杠替换为JSON合法的转义形式,再解析:
import json with open("4.json", encoding="utf8") as f: raw_content = f.read() # 把单个反斜杠替换为双反斜杠(JSON要求转义) fixed_content = raw_content.replace('\\', '\\\\') parsed_data = json.loads(fixed_content) # 验证读取结果 print(parsed_data["Status"]) for item in parsed_data["Data"]: print(f"库存编码: {item['STOK_KODU']}, 描述: {item['STOK_TEXT']}")
2. 使用ast.literal_eval解析
如果数据格式接近Python字典,ast.literal_eval对非标准转义的容忍度更高,且安全无风险:
import ast with open("4.json", encoding="utf8") as f: raw_content = f.read() parsed_data = ast.literal_eval(raw_content) print(parsed_data["Status"])
3. 手动修正原始JSON文件(推荐)
直接修改JSON文件中的问题字段,将7\\"调整为7\\\"(给反斜杠添加转义),这样标准json.load()就能直接读取:
修正后的字段示例:
"STOK_TEXT":"REM03@FAN MOTORU 24VANELI 7\\\"@@ REMARK@ @@ XRFM1103@ 009 2985@ 2394009@ RF03"
内容的提问来源于stack exchange,提问作者canavarbanavar
相关产品推荐
相关产品推荐

