我正在尝试使用CSV reader高效地读取文件中的列。代码如下:
import csv
csv.register_dialect('csvrd', delimiter='\t', quoting=csv.QUOTE_NONE)
with open('myfile.txt', 'rb') as f:
reader = csv.reader(f,'csvrd')
a0=[x[0] for x in reader]
a1=[x[1] for x in reader]
我获取了第一列的数值,但a1为空。如果我先写a1,那么a0就为空。
我知道一个简单的解决方案,插入
reader=[x for x in reader]
但是我很好奇这个原因。当你从读者那里阅读一个条目时,它会被删除吗?
一个样本myfile.txt
c11 c21 c31
c21 c22 c32
[x for x in reader]
可以写成list(reader)
。然而,显式的for
循环可能更好:您可以精确地遍历 CSV 文件一次,并在代码尝试两次时执行任何操作而不会出现任何问题。虽然可以在列表推导中编写相同的内容,但是推导并不总是更清晰/Pythonic。 - x3al