2011-10-02 89 views
0

我的簡單腳本檢查文件中的某個單詞似乎失敗了,我似乎無法通過文檔或搜索來解釋它。代碼如下。我相信我通過打印代碼本身並找到我正在尋找的單詞來縮小它到'in'操作符的範圍。如果好奇,這個腳本是在Quake源代碼中查找某些關鍵字,因爲我不想查看30個以上完整的源文件。任何幫助將不勝感激,謝謝!Python'in'運算符無法解釋失敗

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!' 
+4

無關的,但是你的括號是不必要的。這樣做更「pythonic」:「如果文字中有文字:' –

+1

附註:描述某種莫名其妙的失敗可能會引起人們的注意。它更像是你誤解了某些東西。 –

回答

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) 
+8

使用'enumerate(file,1)';那麼你可以使用'i'而不是'i + 1'。 –

+0

+1因爲我沒有把2 + 2放在一起,你可以在File實例上使用枚舉,這很愚蠢,因爲我之前已經爲myFile中的行完成了。 – David

5

text是一個字符串列表。如果wordtext,則返回true。你可能想通過文字iterate,然後檢查每一行的單詞。當然,有多種方式可以編寫它。

看到這個simple example

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

和downvote是爲了什麼? –