如何将csv中的每列保存到列表中?

时间:2017-09-18 00:49:55

标签: python python-3.x csv python-3.6

我正在尝试按以下方式将每列列入一个列表:

f = open('file.csv', 'r') 
a = [float(item.split('.')[0]) for item in f]
b = [float(item.split('.')[1]) for item in f]

当我打印a时,我会得到一个包含第一列所有值的列表, 但是当我打印b时,它会显示一个空列表。我尝试使用ba更改a的列,为我提供了我要求的列,就在第一个定义的列表之后,它一直显示空列表。

2 个答案:

答案 0 :(得分:2)

您也可以使用csv.reader

@ECHO OFF
ECHO NB: Starting 2
ping -n 10 localhost
ECHO NB: in 2 ERRORLEVEL is %ERRORLEVEL%
EXIT /B %ERRORLEVEL%

或使用import csv list_a = [] list_b = [] with open('file.csv', newline='') as csv_file: reader = csv.reader(csv_file, delimiter='.') next(reader, None) # Skip the header. for a, b in reader: list_a.append(float(a)) list_b.append(float(b)) 技巧:

zip

答案 1 :(得分:1)

a = [float(item.split('.')[0]) for item in f]从文件中读取所有内容。第二个列表理解没有任何剩余。您必须关闭该文件并再次打开它,例如:

with open('file.csv', 'r') as f:
    a = [float(item.split('.')[0]) for item in f] 
with open('file.csv', 'r') as f:
    b = [float(item.split('.')[1]) for item in f]

但最好只阅读一次文件并在一个循环中同时处理这两个文件:

with open('file.csv', 'r') as f:
    a, b = zip(*[map(float, item.split('.')) for item in f])