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

Python中如何将CSV中字典列表格式的字符串转换为JSON对象

解决方案:将CSV中字典列表格式字符串转换为JSON对象

嘿,我刚好处理过类似的场景,给你两个实用的方案,分别适合用原生库和用Pandas的情况:

核心思路

你遇到的问题本质是把字符串形式的Python字典列表,先解析成真实的Python对象,再转换为标准JSON格式。这里必须用安全的解析方式,避免直接用eval()带来的风险。


方案一:用Pandas处理(推荐,更简洁)

如果平时用Pandas处理CSV,这个方案最省心:

import pandas as pd
import ast
import json

# 1. 读取CSV文件
df = pd.read_csv("your_file.csv")

# 2. 假设目标列名为`review_data`,先把字符串解析为Python列表/字典
# ast.literal_eval是安全的解析方式,只处理合法的Python字面量
df["parsed_data"] = df["review_data"].apply(ast.literal_eval)

# 3. 转换为JSON格式(可选:存为列或直接使用)
# 转成JSON字符串,方便存入新CSV或传输
df["json_data"] = df["parsed_data"].apply(json.dumps)

# 示例:获取第一行的JSON对象(Python字典列表)
first_review_json = df["parsed_data"].iloc[0]
# 或者获取JSON字符串
first_review_json_str = json.dumps(first_review_json)

方案二:用原生CSV库处理(无需第三方库)

如果不想依赖Pandas,用Python标准库也能搞定:

import csv
import ast
import json

# 读取CSV并逐行处理
with open("your_file.csv", "r", encoding="utf-8") as csv_file:
    reader = csv.DictReader(csv_file)
    for row in reader:
        # 提取目标列的字符串(假设列名为`review_data`)
        dict_list_str = row["review_data"]
        
        # 安全解析为Python对象
        try:
            parsed_data = ast.literal_eval(dict_list_str)
        except SyntaxError as e:
            print(f"解析行出错:{row},错误信息:{e}")
            continue
        
        # 转换为JSON字符串
        json_str = json.dumps(parsed_data)
        # 这里可以做后续操作,比如写入新文件或打印
        print(json_str)

关键注意事项

  • 为什么用ast.literal_eval而不是eval()?
    eval()会执行字符串里的任意代码,存在安全风险;ast.literal_eval只解析合法的Python字面量(列表、字典、字符串等),完全安全。
  • 格式兼容问题:
    你给出的示例用的是单引号,而JSON要求双引号——不用担心,json.dumps()会自动把单引号转换为双引号,输出标准的JSON格式。
  • 异常处理:
    如果CSV里有格式不合法的字符串(比如括号不配对、未闭合的引号),会触发SyntaxError,建议加上try-except块捕获错误,避免程序崩溃。

如果遇到特定的格式报错,可以把出错的字符串贴出来,我再帮你调整处理逻辑~

内容的提问来源于stack exchange,提问作者curiousguy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:38:50