繁体   English   中英

用python和csv嵌套的For循环

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM