Python 嵌套循环只运行一次子循环

Python nested loop only runs child loop once

感谢您抽出宝贵时间阅读本文。我正在编写一个 python 脚本,它将检查一个 csv 文件中的 phone 数字是否在另一个 csv 文件中。现在我只是想打印比较结果

num1 == num2

这是一种蛮力方法。所以另一个例子是,如果有两个数组 arr1 = [1,2,3] 和 arr2 = [4,5,6] 我希望它像这样打印出来:

1 4
1 5
1 6
2 4
2 5
2 6
...

问题: 当我 运行 由于某种原因这段代码与子循环的比较只发生一次时,它只是打印出父循环的其余部分而没有再次 运行 子循环,我无法弄清楚为什么。所以它看起来基本上是这样的:

1 4
1 5
1 6
2
3

然后就结束了。知道为什么吗?

代码

def get_number(filter):

try:
    filter = re.sub('-', '', filter)
    filter = re.sub(' ', '', filter)
    filter = re.sub('\)', '', filter)
    filter = re.sub('\(', '', filter)
    filter = filter.replace("+", "")

    if filter[:1] == "1":
        filter = filter[1:]

    if len(filter) != 10:
        filter = None

    if filter != None:
        return int(filter)

except ValueError:
    print("Oops!  That was no valid number.  Try again...")



with open('file1.csv') as csvfile, open('file2.csv') as resultscsvfile:
    input1 = csv.reader(csvfile, delimiter=',')
    input2 = csv.reader(resultscsvfile, delimiter=',')

for row in input1:

    filter = row[29]
    num1 = get_number(filter)
    print("Num 1: " + str(num1))

    if num1 != None and len(str(num1)) == 10:

        for row2 in input2:
            filter2 = row2[6]
            num2 = get_number(filter2)

            if num2 != None and len(str(num2)) == 10:
                print(str(num1) + " == " + str(num2)) 

PS get_number 函数正在删除所有额外的字符和空格,以便在数字之间进行比较,因为人们经常以不同的方式格式化 phone 数字。

迭代器只能使用一次。 移动:

with open('file2.csv') as resultscsvfile:
    input2 = csv.reader(resultscsvfile, delimiter=',')

for row in input1: 循环中每次要遍历所有 input2 行时重新创建它。

顺便说一句,num2 != None 不鼓励。请改用 num2 is not None