Python'in'运算符莫名其妙地失败了

时间:2011-10-02 02:22:05

标签: python

我检查文件中某个单词的简单脚本似乎失败了,我似乎无法通过文档或搜索来解释它。代码如下。我相信我已经将它缩小到'in'运算符,因为打印代码本身并找到我正在寻找的单词而失败。如果好奇,这个脚本是在Quake源代码中找到某些关键字,因为我宁愿不查看30多个完整的源文件。任何帮助将不胜感激,谢谢!

import os

def searchFile(fileName, word):
    file = open(os.getcwd() + "\\" + fileName,'r')
    text = file.readlines()

    #Debug Code
    print text

    if(word in text):
        print 'Yep!'
    else:
        print 'Nope!'

3 个答案:

答案 0 :(得分:7)

失败的原因是因为您正在检查单词是否在文本行内。只需使用read()方法并在那里签入或遍历所有行,每个行分别进行迭代。

# first method
text = file.read()

if word in text:
    print "Yep!"

# second method
# goes through each line of the text checking
# more useful if you want to know where the line is

for i, line in enumerate(file):
    if word in line:
        print "Yep! Found %s on line: %s"%(word, i+1)

答案 1 :(得分:5)

text是一个字符串列表。如果word中的text,则会返回true。您可能希望iterate通过文本,然后检查每行的单词。当然,有多种方法可以写出来。

请参阅此simple example

答案 2 :(得分:0)

for line_num, line in enumerate(file, 1):
    if word in line:
        print line_num, line.strip()