Python解析含JSON列的CSV文件时遇格式错误求助
解决CSV中JSON列解析报错的问题
问题根源
你遇到的错误是因为读取后的JSON字符串格式不合法——最常见的原因是CSV中用双引号转义双引号("")后,读取的字符串首尾残留了包裹整个字段的双引号,或者转义的双引号没有被正确还原,导致json.loads()无法识别合法的JSON结构。
解决方案
方案1:读取CSV时正确处理转义
CSV标准中,用两个双引号表示一个双引号。确保pd.read_csv正确解析这种转义:
import pandas as pd import csv import json # 使用QUOTE_ALL参数确保所有带引号的字段被正确解析 df = pd.read_csv('your_file.csv', quoting=csv.QUOTE_ALL) # 尝试解析JSON列 df['employee_parsed'] = df['employee'].apply(json.loads)
方案2:手动清理字符串后解析
如果读取后的字符串仍有格式问题(比如首尾带双引号、残留转义双引号),先清理再解析:
import pandas as pd import json def parse_json(s): # 去掉首尾的包裹双引号 s = s.strip('"') # 把残留的""转义替换为单个" s = s.replace('""', '"') return json.loads(s) df = pd.read_csv('your_file.csv') df['employee_parsed'] = df['employee'].apply(parse_json)
方案3:直接解析为结构化数据(推荐)
清理后用pd.json_normalize把JSON展开为DataFrame列,方便后续处理:
import pandas as pd import json # 先清理字符串 df['employee_clean'] = df['employee'].str.strip('"').str.replace('""', '"') # 解析并展开JSON employee_details = pd.json_normalize(df['employee_clean'].apply(json.loads)) # 合并回原DataFrame df = pd.concat([df, employee_details], axis=1)
验证方法
可以先打印读取后的字符串,确认格式:
print(df['employee'].iloc[0]) # 正常应该输出: {"name": "Alice", "age": 30} # 如果输出是: "{"name": "Alice", "age": 30}",说明需要清理首尾双引号
内容的提问来源于stack exchange,提问作者Young Z
相关产品推荐
相关产品推荐

