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
。
感谢您抽出宝贵时间阅读本文。我正在编写一个 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
。