我使用下面的代码在csv文件的特定列中搜索ID列表
#!/usr/bin/python
import csv
import sys
with open(r"C:\Test\inputTest.csv", newline = '') as inputFile:
inputReader = csv.reader(inputFile, delimiter=",")
idFile = open(r"C:\Test\testids.txt")
loopcounter = 1
for inputRow in inputReader:
loopcountr+= 1
print (loopcounter)
inputString = inputRow[18]
for id in idFile:
print ("id: ", id)
print ("InputString", inputString)
result = inputString.find(id)
print (result)
但是带有id文件的嵌套循环只运行一次,之后就不再运行了。
输出:
1
id: 123388
InputString ID
-1
id: 112233
InputString ID
-1
id: 141414
InputString ID
-1
2
3
4
5
6
7
8
9
10
知道为什么第二个循环(嵌套循环)不是每次都运行吗?
1条答案
按热度按时间ifmq2ha21#
就像Tim Roberts在评论中提到的,“您应该将idFile读入列表,然后迭代列表。”
您可以将测试ID读入一个列表,如下所示:
或者,如果你对Python中的列表解析很熟悉,那么这是等价的:
然后,当您阅读CSV文件时(大概),您可以将CSV中的一些数据与测试ID进行比较。
这可能看起来像下面这样,我还使用
enumerate()
来计算迭代次数:我模拟了这个数据,CSV的ID在第一列,
row[0]
来自上面的代码:当我运行代码时,我得到:
这就是实现嵌套循环的方法。
如果你习惯于在字典中进行“查找”,你可以摆脱嵌套循环:
test_ids字典如下所示:
现在,您只需检查每个输入ID是否“在”该字典中:
这会产生类似的输出: