python - JSON加载中错误值的错误处理
问题描述
我在使用json.load
.
with open(file) as json_file:
self._metdata = json.load(json_file)
一个文件中的行是坏的,并给出了这个错误:
Expecting property name enclosed in double quotes: line 515716 column 1 (char 24223047)
我希望它json.load
忽略这个值并继续加载其余的值,但我找不到办法做到这一点。我最后做的是逐行阅读并检查错误,但它非常慢。有更好的方法吗?谢谢。
for file in [self._metadata_file_name, self._pharses_map_file_name]:
with open(file) as json_file:
for line in json_file:
try:
row = json.loads(line)
if row:
if file == self._metadata_file_name:
self._metdata = {**self._metdata, **row}
else:
self._pharses_map = {**self._pharses_map, **row}
except Exception as e:
self._logger.log(message="Error pasring JSON " + line + ", for model: " + self._mode + ", file: " + self._metadata_file_name, error=str(e), metadata={"mode" : self._mode}, logType=self._logger.LOG_TYPE_ERROR)
解决方案
您可以json.load
用于加载文件。在第 515716 行,添加双引号包裹密钥。希望能帮到你
推荐阅读
- reactjs - React Router 和 this.props:this.props.location.state 未定义
- android - 如何从viewmodel运行xml中的函数?Android、Kotlin、数据绑定
- c# - 如何获取已用特定属性修饰的枚举成员列表
- elasticsearch - 弹性搜索任何查询执行平台
- php - 以编程方式删除 PHP 部分
- sql - 三个表的左连接
- excel - 在 VBA 中使用输入框作为过滤条件
- sql-server - 如何将多个参数编程到 SQL Server 存储过程的代码中
- javascript - 在 JavaScript 中读取 Firebase 数据库后,For 循环不起作用
- tensorflow - IllegalStateException: 错误: 无法运行会话期望 arg[0] 为 uint8 但提供了 int32 || 不支持的数据类型:UBYTE