如何格式化JSON字符串以调用.get()方法?解决json.loads解析异常
问题描述
有一个包含print输出信息与JSON结构的字符串,print输出内容如下:
print("json str:", type(json_str), json_str) json str: <class 'str'> json { "word": [ "table name" ] }
运行以下代码时抛出异常:
import json json.loads(json_str).get('word')
异常信息:
Exception Expecting value: line 1 column 1 (char 0)
需要格式化该字符串,使其可正常调用.get()方法。
解决方法
- 提取纯JSON内容
原始字符串混杂了json str: <class 'str'> json这类非JSON格式的冗余内容,json.loads()只能解析标准JSON结构,因此必须先提取出从{开始到}结束的纯JSON片段。 - 解析并调用方法
对提取后的纯JSON字符串进行解析,即可正常使用.get()方法获取目标值。
示例代码:
import json # 原始带冗余内容的字符串 raw_str = '''json str: <class 'str'> json { "word": [ "table name" ] }''' # 方法一:通过分割字符串提取JSON pure_json = raw_str.split('json\n\n')[1] # 方法二:通过索引定位提取JSON(适配更多场景) start_pos = raw_str.find('{') end_pos = raw_str.rfind('}') + 1 pure_json = raw_str[start_pos:end_pos] # 解析并获取目标值 data = json.loads(pure_json) print(data.get('word')) # 输出:['table name']
内容的提问来源于stack exchange,提问作者kms
相关产品推荐
相关产品推荐

