2017-07-17 6 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'はタイプミスです。単語全体について言えば、 'word'を' r "\ b {} \ b" .format(word) 'に置き換えることができますか?または 'r" \ <{}\> ".format(word)'?それとも多分 'r" [[:<:]]{}[[:>:]] "。書式(単語)'? '-w"を削除することができます。 –

+0

@WiktorStribiżew 'word'を' r "\ b {} \ b" .format(word) 'に置き換えようとしましたが、私はまだ同じisueに直面しています – MMG

答えて

0

は、パラメータ-wを使用してみてください:

import subprocess 

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

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

words – MMG

+0

@MMG私はちょうどこのスクリプトを実行しました.Linuxでは、私の更新された答えを見て、それは私にパラメータ "-w"を持つサブワードを与えません。私はコンソール端末で "python scrp.py"のように実行しました –

+0

したがって、特定の文字列を入力すると、正しい一致が返されます。しかし、私は入力ファイルをループしていて、文字列変数を渡してしまいます。変数のタイプは - MMG

関連する問題