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

如何将.csv文件中的某列读取为元组列表?

解决方法

方法1:结合正则替换与ast.literal_eval

原字符串里的元素无引号(如a、b),直接用ast.literal_eval会报错,需先通过正则给无引号标识符添加引号,再解析为Python对象:

import pandas as pd
import ast
import re

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

# 定义转换函数
def convert_to_tuple_list(s):
    # 匹配括号/空格后的无引号标识符,添加双引号
    s_quoted = re.sub(r'(?<=[\(\s])([a-zA-Z0-9_]+)(?=[\,\)\s])', r'"\1"', s)
    # 解析为元组列表
    return ast.literal_eval(s_quoted)

# 应用到目标列
df["tuplist"] = df["tuplist"].apply(convert_to_tuple_list)

处理后df["tuplist"][0]会变为[('a', 'b', 'c'), ('d', 'e', 'f'), ('x', 'y', 'z')],元组内元素均为字符串类型。

方法2:纯正则提取组装

若无需处理复杂嵌套结构,可直接用正则提取元素并手动组装元组列表:

import pandas as pd
import re

def convert_to_tuple_list(s):
    # 提取所有括号内的元素组
    tuples_str = re.findall(r'\((.*?)\)', s)
    result = []
    for t_str in tuples_str:
        # 拆分元素、去除空格后转为元组
        elements = [elem.strip() for elem in t_str.split(',')]
        result.append(tuple(elements))
    return result

df = pd.read_csv("your_file.csv")
df["tuplist"] = df["tuplist"].apply(convert_to_tuple_list)

注意事项

  • 若元素包含逗号、特殊符号,需调整正则匹配规则适配场景;
  • 优先选择方法1,ast.literal_eval比原生eval更安全,且能兼容复杂嵌套格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:40:36