[英]Nested For loops with python and csv
我在使用python中的csv
对象编码嵌套的for循环时遇到问题。 我想解析两个csv
文件并比较它们的一部分。 因此,我在下面编写了嵌套循环。 我期望的是python解析外部循环的第一项的内部循环,然后为外部循环的第二项,他再次解析内部循环,依此类推。 发生的情况是,解析了内部循环,然后传递了外部循环,甚至没有再次进入内部循环。
使用num_list = [1, 2, 3]
类的非csv
对象时num_list = [1, 2, 3]
其效果与预期的相同。
谢谢。
import csv
csvfile = open('/Users/rene/Downloads/Test/Export.csv', newline='', encoding='windows-1252')
spamreader = csv.reader(csvfile, dialect='excel', delimiter=';')
csvfile1 = open('/Users/rene/Downloads/Test/Transfer.csv', newline='', encoding='windows-1252')
spamreader1 = csv.reader(csvfile1, dialect='excel', delimiter=';')
for row in spamreader:
print("1row:"+row[1])
for row1 in spamreader1:
print("2row:"+row[1])
print("2row1:"+row1[0])
csvfile.close()
csvfile1.close()
csv.reader
对象是迭代器,它们在被消耗时会被耗尽。 因此,在外部循环的第一次迭代之后, spamreader1
已经为空。
只需将在内部循环中迭代的spamreader1
转换为list
以便可以对其进行多次迭代:
# ...
# collect all rows in a list
spamreader1 = list(csv.reader(csvfile1, dialect='excel', delimiter=';'))
for row in spamreader:
# ...
for row1 in spamreader1:
# now this will work as you expect
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.