1

我有一个.csv文件,其中数据用逗号分隔,我想将它分成列。为此,我试图将每个行元素放入列表中,然后将它们放入新文件的列中。我正在使用的代码如下:

import csv

c1 = []
c2 = []
c3 = []
with open('File.csv', 'r') as f:
   reader = csv.reader(f, delimiter=',')
   for row in reader:
       c1.append(row[0])
       c1.append(row[1])
       c1.append(row[2])

出于某种原因,我只能将 .csv 文件的列存储在 c1 中。对于 c2 和 c3 我得到一个错误。似乎“阅读器”在获取当前行的第一个元素后立即跳转到下一行。有人可以给我一个想法吗?也许还有更简单的方法来做到这一点?

4

1 回答 1

0

那里有一个语法错误。您将所有内容附加到 c1 中,而不是将值放入各种列表中。

假设 [big one!] - csv 文件每行仅包含 3 列。

我用下面的代码测试了它

import csv

c1 = []
c2 = []
c3 = []
with open('csvfile.csv', 'r') as f:
   reader = csv.reader(f, delimiter=',')
   for row in reader:
       c1.append(row[0])
       c2.append(row[1])
       c3.append(row[2])
print(f'column1:{c1}')
print(f'column2:{c2}')
print(f'column3:{c3}')

输出

% python3 csv_to_column.py
column1:['1', '4', '7']
column2:['2', '5', '8']
column3:['3', '6', '9']

参考 - 虚拟 csv 文件

% cat csvfile.csv
1,2,3
4,5,6
7,8,9
于 2021-04-04T10:20:35.710 回答