Python 'in' 运算符莫名失败

0 投票
3 回答
1067 浏览
提问于 2025-04-17 03:30

我写了一个简单的脚本,用来检查文件里是否有某个特定的词,但现在这个脚本好像出问题了,我也找不到文档或网上的资料来解释这个问题。下面是我的代码。我觉得问题可能出在'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

在编程中,有时候我们会遇到一些问题,想要找到解决办法。比如,有人可能在使用某个工具或库时,遇到了错误或者不明白怎么用。这时候,大家会去一个叫StackOverflow的网站上提问,那里有很多程序员会帮忙解答。

在提问的时候,最好能把遇到的问题描述清楚,并且提供一些相关的代码,这样别人才能更好地理解你的问题。比如,你可以把出错的代码放在一个代码块里,像这样:

for line_num, line in enumerate(file, 1):
    if word in line:
        print line_num, line.strip()
。这样做可以让其他人更容易看到你具体遇到了什么问题。

总之,提问时要尽量详细,这样才能得到更好的帮助。

5

text 是一个字符串的列表。如果 wordtext 中的一行,这个检查会返回真(true)。你可能想要 逐行遍历 这个文本,然后把每一行和 word 进行比较。当然,这种写法有很多种方式。

可以看看这个 简单的例子

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)

撰写回答