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

Python如何将无引号字符串项的字符串列表转换为列表?

解决CSV无引号列表项的解析问题

方法1:正则表达式自动补全引号

用正则匹配列表中逗号分隔的内容,给每个无引号的项加上双引号,让字符串符合Python列表语法,再用ast.literal_eval解析。示例代码:

import csv
import ast
import re

# 匹配列表中括号/空格后、逗号/括号前的内容
pattern = re.compile(r'(?<=[\[\s])([^,\]]+)(?=[,\]])')

with open('your_file.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        # 给每个列表项添加双引号
        modified_list_str = pattern.sub(r'"\1"', row[1])
        # 正常解析为Python列表
        movie_list = ast.literal_eval(modified_list_str)
        print(row[0], movie_list)

方法2:手动分割处理(适用于项内无逗号的场景)

如果列表里的内容本身不含逗号(比如电影名里没有逗号),可以直接切割字符串处理:

import csv

with open('your_file.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        # 去掉首尾的[],按逗号分割后清理空格
        list_content = row[1].strip('[]')
        movie_list = [item.strip() for item in list_content.split(',')]
        print(row[0], movie_list)

注意:如果项里包含逗号,这个方法会错误分割内容,优先用正则方法。

方法3:用第三方库解析复杂场景

如果需要处理项内有逗号、特殊符号的情况,可以用pyparsing库做宽松解析:
先安装库:

pip install pyparsing

再用以下代码处理:

import csv
from pyparsing import Word, alphas, nums, OneOrMore, delimitedList, Combine

# 定义允许出现在项里的字符:字母、数字、空格、&等
item_rule = Combine(OneOrMore(Word(alphas + nums + ' &')))
# 定义无引号列表的语法规则
list_rule = '[' + delimitedList(item_rule) + ']'

with open('your_file.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        # 解析列表字符串
        parsed_result = list_rule.parseString(row[1]).asList()
        # 剔除首尾的[],得到真实列表内容
        movie_list = parsed_result[1:-1]
        print(row[0], movie_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 06:55:09