嵌套列字符串转JSON时单双引号冲突引发JSONDecodeError如何解决
可行解决方案
核心思路:你要解析的内容本质是Python字典的字面量格式,不是标准JSON,不需要手动替换引号,直接用Python官方的ast.literal_eval工具解析即可,原生兼容两类场景。
操作步骤
- 导入依赖库
import ast import pandas as pd from pandas import json_normalize
- 直接解析嵌套列内容
不需要做任何引号替换操作,直接调用ast.literal_eval解析,自动兼容单引号包裹属性、转义单引号的场景:
df['parsed_content'] = df['column'].apply(ast.literal_eval)
- 生成结构化DataFrame
解析完成后直接用json_normalize展开嵌套值即可:
final_df = json_normalize(df['parsed_content'])
脏数据兼容处理
如果数据中存在空值、格式错误的异常内容,可以加异常捕获逻辑避免批量处理中断:
def safe_parse(input_str): try: return ast.literal_eval(input_str) except (ValueError, SyntaxError, TypeError): # 异常场景可根据需求返回空字典、NaN或原字符串 return {} df['parsed_content'] = df['column'].apply(safe_parse)
原理说明:手动替换引号会破坏字符串内部的转义语义,导致原本合法的转义单引号变成非法的JSON格式。
ast.literal_eval是专门用于安全解析Python字面量(字典、列表、元组等)的工具,原生支持Python语法的单引号、转义字符规则,完全不需要提前做字符串修正操作。
内容的提问来源于stack exchange,提问作者Phelipe
相关产品推荐
相关产品推荐

