python中嵌套的for循环不会增加外部for循环

2024-09-26 18:06:17 发布

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

我有两个文件:q.txt包含单词,p.txt包含句子。我需要检查q.txt中的单词是否存在于p.txt中。以下是我写的:

#!/usr/bin/python
twts=open('p.txt','r');
words=open('q.txt','r');
for wrd in words:
        for iter in twts:
                if (wrd in iter):
                        print "Found at line" +iter

即使存在匹配项,它也不会打印输出。我还可以看到外部for循环没有继续到words对象中的下一个值。有人能解释一下我做错什么了吗?在

编辑1:我使用的是Python2.7 编辑2:对不起,我把变量名弄混了。现在已经改正了。在


Tags: 文件intxt编辑forifbinusr
3条回答

当您迭代一个file对象时,在完成迭代之后,光标将结束在文件的末尾。因此,尝试再次迭代它(在outer for循环的下一次迭代中)是行不通的。代码工作的最简单方法是在外部for循环的开始处查找文件的开头。示例-

#!/usr/bin/python
words=open('q.txt','r');
twts=open('p.txt','r');
for wrd in words:
    twts.seek(0)
    for twt in twts:
        if (wrd.strip() in twt):
            print "Found at line" +iter

另外,根据问题,似乎您使用了错误的文件,twts应该是包含句子的文件,words应该是包含单词的文件。但是您已经打开了p.txt,为words打开了q.txt来显示``句子。如果是相反的,你应该从另一个方向打开文件。在

另外,建议不要使用iter作为变量名,因为这也是一个内置函数的名称,而您在-for iter in twts-shadows内建函数-iter()中定义它。在

如果您已经发布了文件的内容,但是您是否已经将\n从行中剥离出来了呢?这对我有用:

words = open('words.txt', 'r')
twts = open('sentences.txt', 'r')

for w in words:
    for t in twts:
        if w.rstrip('\n') in t.rstrip('\n'):
            print w, t

你好像把这两个文件弄混了。您说q.txt包含这些单词,但是您将p.txt存储到words变量中。在

相关问题 更多 >

    热门问题