当你爬着数据,程序突然报JSON格式化异常...(论如何修复异常的JSON)
引文
日常数据采集容易遇到异常的JSON数据,如:
括号不闭合{"profile": {"name": "xx", "age": 20}
没有引号{name: python, age: 20, salary: "python, }
反斜杠异常{"name": "python", "age": 20, "salary: "\"python\\""}
等等等等,之前基本都是使用正则匹配的方式提取关键文本,但是过于耗费时间了。
JSON-Repair
JSON-Repair是一个用于修复损坏或无效的JSON数据的库。它可以帮助你解决由于格式错误、缺失标记或其他问题导致的JSON数据无法解析的问题。
-
安装json-repair库:
使用以下命令在你的Python环境中安装json-repair库:pip install json-repair
-
导入json-repair库:
import json_repair
-
接口使用:
json_repair提供了loads接口来加载异常数据invalid_json = '[{"name": "John", "age": 25}, {"name": "Mike", "age": 30]' repaired_json = json_repair.loads(invalid_json)
-
错误处理:
如果JSON数据无法修复,repair
函数将引发一个json_repair.JsonRepairError
异常。你可以使用try-except语句来处理该异常并执行相应的操作。下面是一个示例代码:json_data = '{"name": "John", "age: 30, "city": "New York"}' try: repaired_json = json_repair.loads(json_data) print(repaired_json) except json_repair.JsonRepairError as e: print(f"JSON repair failed: {e}")
-
进一步的修复选项:
json-repair库还提供了其他修复选项,例如指定修复级别、指定修复策略等。你可以在json_repair的文档中查找更多细节,并根据你的需求进行相应的配置。
使用案例:
- 解析无效的JSON数据:
import json_repair
invalid_json = '[{"name": "John", "age": 25}, {"name": "Mike", "age": 30]'
parsed_data= json_repair.loads(invalid_json)
print(parsed_data)
- 修复缺失的JSON标记:
import json_repair
missing_token_json = '{"name": "John", "age": 25, "city": "New York"}'
parsed_data= json_repair.loads(missing_token_json)
print(parsed_data)
- 修复格式错误的JSON数据:
import json_repair
malformed_json = '{name: "John", age: 25, city: "New York"}'
parsed_data= json_repair.loads(malformed_json)
print(parsed_data)