我想一个文本文件中的行与另一个文本文件,一行一行地匹配,有嵌套的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
>>>
我想一个文本文件中的行与另一个文本文件,一行一行地匹配,有嵌套的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
>>>
你同时需要循环这两个文件
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
问题是,我需要重置与内环寻求(0),这样做循环正常工作,感谢大家的答复。
你的实现运行在文件1的每一行运行的所有行文件2,
实际的代码SHD是,
for line1,line2 in zip(ratings,movies):
cont1+=1
cont2+=1
print(cont1,cont2)
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
继续进行,直到迭代器的一个停止,所以你只能得到尽可能多的行,较短的文件。 我假设是正确的,但是,因为代码隐含地假设这两个文件反正相匹配。