【发布时间】:2014-05-03 18:34:05
【问题描述】:
我正在尝试使用 CSV 阅读器有效地读取文件中的列。代码是:
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。
标签: python list csv list-comprehension