Python';在';操作员莫名其妙地失败了

Python';在';操作员莫名其妙地失败了,python,Python,我检查文件中某个单词的简单脚本似乎失败了,我似乎无法通过文档或搜索来解释它。代码如下。我相信我已经把它缩小到了“in”操作符,通过打印代码本身并找到我正在寻找的单词来失败。如果好奇的话,这个脚本是为了在Quake源代码中找到某些关键字,因为我不想查看30多个完整的源文件。任何帮助都将不胜感激,谢谢 import os def searchFile(fileName, word): file = open(os.getcwd() + "\\" + fileName,'r') te

我检查文件中某个单词的简单脚本似乎失败了,我似乎无法通过文档或搜索来解释它。代码如下。我相信我已经把它缩小到了“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!'

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


请参见此图。

失败的原因是您正在检查单词是否在文本行内。只需使用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)

不相关,但括号是不必要的。这样做更像是“python”:如果文本中有单词:Side-note:将某些东西描述为莫名其妙的失败可能会让人恼火。这更像是你误解了什么。使用
枚举(文件,1)
;然后您可以只使用
i
而不是
i+1
+1,因为我没有将2+2放在一起,您可以在文件实例上使用enumerate,这很愚蠢,因为我以前在myFile中为行做过。
for line_num, line in enumerate(file, 1):
    if word in line:
        print line_num, line.strip()