Python 使用csv.reader()创建列表

Python 使用csv.reader()创建列表,python,csv,Python,Csv,我正在尝试从csv文件创建python列表。CSV文件只包含一列,包含大约300行数据。该列表(理想情况下)应在每一行中包含一个数据字符串 当我执行下面的代码时,我得到一个列表列表(每个元素都是一个列表,而不是一个字符串)。我使用的CSV文件是否格式不正确,或者我是否缺少其他内容 filelist = [] with open(r'D:\blah\blahblah.csv', 'r') as expenses: reader = csv.reader(ex

我正在尝试从csv文件创建python列表。CSV文件只包含一列,包含大约300行数据。该列表(理想情况下)应在每一行中包含一个数据字符串

当我执行下面的代码时,我得到一个列表列表(每个元素都是一个列表,而不是一个字符串)。我使用的CSV文件是否格式不正确,或者我是否缺少其他内容

filelist = []                
with open(r'D:\blah\blahblah.csv', 'r') as expenses:
    reader = csv.reader(expenses)
    for row in reader:
        filelist.append(row)

是一个包含一个字段的行。您需要获取该行中的第一项:

filelist.append(row[0])
或者更简洁地说:

filelist = [row[0] for row in csv.reader(expenses)]

每一行都作为单元格列表读取。 所以你想做的是

output = [ row[0] for row in reader ]
因为您每行只填写第一个单元格。

您的“csv”似乎不包含“;”或“,”之类的分隔符。 因为你说它只包含一列。所以它不是一个真正的csv,也不应该有一个单独的csv

因此,您可以简单地逐行读取文件:

filelist = []
for line in open(r'D:\blah\blahblah.csv', 'r').readlines():
    filelist.append(line.strip())

显示您的输入和输出。CSV是一系列行。行是列值的序列。列值是字符串。所以,像这样迭代一个CSV应该会给你一个字符串列表。在我的手机上输入时速度太慢了-。-*这不是一个好主意,因为转义的分隔符和引号以及其他CSV典型符号…是的。取决于输入文件,以及它是符合rfc的csv文件还是纯文本文件。谢谢,这似乎很有效。我没有想到要强调行中的特定项目,因为只有一个项目可以开始。