用python和cs嵌套For循环

2024-10-02 12:32:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我在编写python中使用csv对象的嵌套for循环时遇到问题。我想解析这两个csv文件并比较其中的一部分。因此,我编写了下面的嵌套循环。 我期望的是,python解析内部循环以获取外部循环的第一项,然后对于外部循环的第二项,再次解析内部循环,依此类推。 所发生的是,内部循环被解析,然后外部循环被传递,甚至没有再次进入内部循环。在

当使用非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()

Tags: csvcsvfile对象testforwindowsdownloadsnewline
1条回答
网友
1楼 · 发布于 2024-10-02 12:32:15

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

相关问题 更多 >

    热门问题