Python读物线嵌套了两个文件循环(Python reading lines in nested

2019-10-17 08:09发布

我想一个文本文件中的行与另一个文本文件,一行一行地匹配,有嵌套的for循环与我的一个问题,那一定是简单的,但我不能找到它,

for line1 in ratings:
    cont1+=1

    for line2 in movies:
         cont2+=1
         print(cont1,cont2)

我与此回路简化它,检查错误,外环不到达CONT = 2,

1 1
1 2
1 3
1 4
1 5
1 6
1 7
.
.
.
1 157
>>>

Answer 1:

你同时需要循环这两个文件

ratings= open('ratings.txt')
movies= open('movies.txt')

for rating, movie in itertools.izip(ratings, movies):
    # do task

要么

ratings= open('ratings.txt').readlines()
movies= open('movies.txt').readlines()

for rating, movie in zip(ratings, movies):
    # do task


Answer 2:

问题是,我需要重置与内环寻求(0),这样做循环正常工作,感谢大家的答复。



Answer 3:

你的实现运行在文件1的每一行运行的所有行文件2,

实际的代码SHD是,

for line1,line2 in zip(ratings,movies):
 cont1+=1
 cont2+=1
 print(cont1,cont2)


Answer 4:

with open('ratings.txt') as ratings, open('movies.txt') as movies:
    for rating, movie in itertools.izip(ratings, movies):
        # do task

这是一种改进avasal的答案 ,它拿起迭代行(相当于旧xreadlines被废弃),而不是通过在阅读完所有的行readlines() 所以应该从阅读每一条线,然后对其进行处理,然后读取另一行等,允许文件艰巨性,其中readlines执行将被限制在较小的文件。

需要注意的是izip继续进行,直到迭代器的一个停止,所以你只能得到尽可能多的行,较短的文件。 我假设是正确的,但是,因为代码隐含地假设这两个文件反正相匹配。



文章来源: Python reading lines in nested for loops from two files