2017-07-17 70 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