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

如何用Python将含多值单元格的CSV单列转换为列表

解决单列CSV含多值单元格的读取问题

我在StackOverflow上翻了好多解答,但还是没搞定自己的问题。我有个只有一列的CSV文件,列名是Values,内容大概是这样的:

abc
xyz
bcd,fgh
tew,skdh,fsh

能看到有些单元格里是用逗号分隔的多个值。我写了这段代码:

with open('dat.csv', 'rb') as inputfile:
    reader = csv.reader(inputfile)
colnames=['Keywords']
data = pandas.read_csv('dat.csv', names=colnames)
lkn=data.values.tolist()
print lkn

但输出完全不是我想要的,想请教怎么解决。


别担心,我来帮你捋捋问题出在哪,以及怎么修正:

首先你写的代码里有个小冗余——你用csv.reader打开了文件但根本没用到它,直接删掉这部分就行,不影响结果。

核心问题是:pandas默认把逗号当作CSV的列分隔符,所以那些带逗号的单元格会被自动拆成多列,导致你的数据结构完全乱掉。要解决这个,我们得告诉pandas不要把内容里的逗号当成分隔符,因为你的CSV只有一列,所有内容都属于这一列。

给你两个实用的解决方案:

方案一:用pandas正确读取单列数据

我们可以指定一个几乎不会在数据里出现的字符作为分隔符,比如\x01(一个控制字符),这样pandas就会把整行内容都当成单列的取值。修改后的代码如下:

import pandas as pd  # 记得先导入pandas哦

colnames = ['Keywords']
# 指定特殊分隔符,确保整行作为一列读取
data = pd.read_csv('dat.csv', names=colnames, sep='\x01', engine='python')
lkn = data.values.tolist()
print(lkn)

这样读取后,那些带逗号的单元格会被完整保留,不会被拆分,输出就是你预期的格式了。

方案二:手动读取每行内容(更简洁)

如果只是想提取所有行的内容,不需要用pandas的数据分析功能,直接手动读取每行更简单:

with open('dat.csv', 'r') as inputfile:
    next(inputfile)  # 如果CSV第一行是列名"Values",就跳过这行;没有的话删掉这句
    lkn = [line.strip() for line in inputfile]

print(lkn)

这个方法直接读取每行,去掉换行符,得到的列表每个元素就是原CSV里的每一行内容,完美保留带逗号的单元格。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:41:03