【发布时间】:2015-05-25 00:17:49
【问题描述】:
在 Python(2.7.6) 中,我试图从 CSV 文件的某些列中获取列表。给定 CSV 文件 test.csv 的内容:
COL_ONE,COL_TWO,COL_THREE
val_R1C1,val_R1C2,val_R1C3
val_R2C1,val_R2C2,val_R2C3
val_R3C1,val_R3C2,val_R3C3
val_R4C1,val_R4C2,val_R4C3
我希望下面的代码可以为我做这件事:
import csv
reader = csv.DictReader(open("test.csv", "r"))
col2 = list(c2['COL_TWO'] for c2 in reader)
col3 = list(c3['COL_THREE'] for c3 in reader)
不幸的是,当我打印两个列表 col2 和 col3 时,第二个列表是空的。
['val_R1C2', 'val_R2C2', 'val_R3C2', 'val_R4C2']
[]
这个替代方案具有相同的结果:
reader = csv.DictReader(open("test.csv", "r"))
col2 = []
for c2 in reader:
col2.append(c2['COL_TWO'])
col3 = []
for c3 in reader:
col3.append(c3['COL_THREE'])
解决方法很简单:
col2 = []
col3 = []
for cval in reader:
col2.append(cval['COL_TWO'])
col3.append(cval['COL_THREE'])
我得到了我在前两个示例中所期望的结果:
['val_R1C2', 'val_R2C2', 'val_R3C2', 'val_R4C2']
['val_R1C3', 'val_R2C3', 'val_R3C3', 'val_R4C3']
如果能帮助我理解我做错了什么,我将不胜感激。为什么我在所有三种情况下都没有得到相同的结果?
【问题讨论】:
标签: python list python-2.7 csv