You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 13:57:25