【发布时间】:2017-04-08 00:20:21
【问题描述】:
在下面的代码中:我正在读取一个文件,获取标题行,查找特定的标题列并存储它们的索引。然后我遍历其余的行,只想要那些索引的值。
import csv
def csvReader(csvFileName):
counter = 10
keyMap = []
header = ["Test1","Test2"]
with open(csvFileName,'r') as f:
reader = csv.reader(f,skipinitialspace=True)
Firstline = True
print(reader)
for row in reader:
if counter > 0 and Firstline == True:
print(list(enumerate(row)))
indexes =[i for i, j in enumerate(row) if j in header]
print(indexes)
Firstline=False
counter = counter - 1
elif counter > 0:
a = dict(zip(header, map((lambda str: row[i] for i in indexes) ,row)))
print(a)
print('test')
counter = counter - 1
return keyMap
if __name__ == '__main__':
csvReader("C:/Test.csv")
【问题讨论】:
-
您的代码中发生了很多奇怪的事情。您正在使用列表推导,但从不捕获列表!所以实际上,他们什么都不做。您还可以在没有参数的情况下调用
.append... 这应该会引发错误。我不太理解您对您正在尝试做什么的描述,因为它有点模糊,但它听起来可能相对简单。为什么不尝试给出示例输入和输出? -
另外,
counter没有定义。以及为什么要从计数器中减去! -
您只是想从 CSV 中提取特定列吗?
-
我粘贴了完整的代码 sn-p,是的,我正在尝试从 csv 中提取特定的列。
-
这是我要修复的行,以便:我只得到特定的列值。 a = dict(zip(header, map((lambda str: row[i] for i in index) ,row)))
标签: python python-3.x