2017-07-17 58 views
1

我想在Python中使用grep來搜索文本文件中的單詞。我試過這樣的東西 -在Python中使用grep來搜索只有確切的單詞

subprocess.call(['/bin/grep', str(word), "textFile.txt"]) 

這一行打印控制檯上的所有輸出。而且,即使單詞不完全匹配,它也會返回true。例如,它返回一個字,即使這場比賽 - xxxwordsxxx

def find_words(in_file, out_file): 
    for word in in_file: 
     word = word.rstrip() 
     subprocess.call(["grep", "-w", word, "textFile.txt"])  

編輯 我in_file中和TextFile.txt的是相同的。

如何實現搜索確切的單詞?如果這不是一個正確的方法,有沒有其他方法可以做這個搜索? (這是一個巨大的文本文件,我必須要找到的文件中的所有單詞重複)

+0

'subprocess.clas' - 是不正確 – RomanPerekhrest

+0

'call'應被使用,'clas'是一個錯字。至於整個單詞,你可以嘗試用'r'\ b {} \ b「.format(word)'替換'word'嗎?或'r'\ <{}\>「.format(word)'?甚至可能是'r'[[:<:]]{}[[:>:]]「.format(word)'?您可以刪除''-w'' –

+0

@WiktorStribiżew我試圖用'r「\ b {} \ b」.format(word)'替換'word'並且我仍然面臨相同的錯誤 – MMG

回答

0

使用參數-w嘗試:

import subprocess 

word = input("select word to filter: ") 

subprocess.call(['/bin/grep', "-w", word, "textFile.txt"]) #str is not needed 
+0

它仍然返回sub-字 – MMG

+0

@MMG我運行完全這個腳本,在Linux中,看到我更新的答案,並沒有給我帶有參數「-w」的子詞,它沒有它。我在控制檯終端上運行它,比如「python scrp.py」 –

+0

因此,如果輸入一個特定的字符串,它會返回正確的匹配。但我正在循環輸入文件,並傳遞一個字符串變量,它弄亂了。變量的類型是 - MMG