这是我的问题,我倾向于通过列表在CSV中获得相应的值。例如:
我有一个像
这样的清单namelist=[1,2]
和csv喜欢
name id value
1 a aaa
2 b bbb
3 c ccc
我倾向于使用列表中的每个元素来查找CSV中的相应值。例如:1-aaa; 2-bbb。这就是我现在尝试的:
with open('1.csv','rb') as f:
reader = csv.DictReader(f)
for i in namelist:
for row in reader:
if row['name'] == namelist[i]:
print row['value']
但我一无所获。我该怎么办呢? 提前谢谢!
答案 0 :(得分:0)
首先,你应该在""之后使用缩进。条款。另一件可能导致问题的事情可能就是这部分代码:
for i in namelist: # in that case if namelist = [1,2] i will be 1 or 2, but you need 0,1
如果列的顺序总是如此(我的意思是名称,id,值),你也可以尝试这个解决方案:
namelist=[1,2]
with open('1.csv','rb') as f:
reader = list(csv.reader(f))
for row in reader:
for i in range(len(namelist)): # or if row[0] in namelist:
if row[0] == namelist[i]:
print row[2]
答案 1 :(得分:0)
一些事情:
csv.DictReader
将项目读取到string:string
的字典,而不是string:int
。所以,我将你的名单改为字符串列表。或者,您可以将row['name']
转换为整数,但我认为以这种方式转换您的名单会更加通用。
检查if row['name'] in namelist:
然后循环遍历整个csv文件以查找名单中的每个元素会快得多。
代码:
import csv
namelist=['1','2']
with open('1.csv','rb') as f:
reader = csv.DictReader(f)
for row in reader:
if row['name'] in namelist:
print row['value']
输出:
aaa
bbb