我正在尝试按以下方式将每列列入一个列表:
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
时,它会显示一个空列表。我尝试使用b
和a
更改a的列,为我提供了我要求的列,就在第一个定义的列表之后,它一直显示空列表。
答案 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])