Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python和csv嵌套For循环_Python_Loops_Csv - Fatal编程技术网

使用python和csv嵌套For循环

使用python和csv嵌套For循环,python,loops,csv,Python,Loops,Csv,我在用python编写带有csv对象的嵌套for循环时遇到问题。我想解析这两个csv文件,并比较其中的一些部分。因此,我对下面的嵌套循环进行了编码。 我所期望的是python解析外部循环的第一项的内部循环,然后再次解析外部循环的第二项的内部循环,依此类推。 发生的事情是,内部循环被解析,然后外部循环被传递,甚至没有再次进入内部循环 当使用非csv对象时,如num_list=[1,2,3]这与预期的效果类似 谢谢 import csv csvfile = open('/Users/rene/Do

我在用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()

csv.reader
对象是迭代器,当它们被使用时会耗尽。因此,
spamreader1
在外部循环的第一次迭代后已经为空

只需将您在内部循环中迭代的
spamreader1
转换为
列表
,即可对其进行多次迭代:

# ...
# 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

谢谢很有魅力