Python 3.x 在Python中使用grep只搜索精确的单词

Python 3.x 在Python中使用grep只搜索精确的单词,python-3.x,grep,Python 3.x,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 = wor

我正在尝试使用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_文件和textFile.txt是相同的


如何实现对确切单词的搜索?如果这不是一个正确的方法,有没有其他方法可以进行此搜索?(这是一个巨大的文本文件,我必须找到文件中所有单词的副本)

尝试使用参数-w:

import subprocess

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

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

尝试使用参数-w:

import subprocess

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

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

您可以使用
.split()
方法迭代行中的单个单词。例如:

string = "My Name Is Josh"
substring = "Name"
for word in string.split():
    if substring == word:
        print("Match Found")

您可以使用
.split()
方法迭代行中的单个单词。例如:

string = "My Name Is Josh"
substring = "Name"
for word in string.split():
    if substring == word:
        print("Match Found")

它仍在返回-words@MMG我在linux中运行了这个脚本,看看我更新的答案,它没有给我带参数“-w”的子词,也没有。我在控制台终端中像“pythonscrp.py”一样运行它,所以如果输入一个特定的字符串,它将返回正确的匹配项。但我在输入文件中循环,并传递一个字符串变量,这会弄糟。变量的类型是-@MMG。您能补充一个问题吗?您到底是如何完成所有过程的?输入和参数的小样本?它仍在返回sub-words@MMG我在linux中运行了这个脚本,看看我更新的答案,它没有给我带参数“-w”的子词,也没有。我在控制台终端中像“pythonscrp.py”一样运行它,所以如果输入一个特定的字符串,它将返回正确的匹配项。但我在输入文件中循环,并传递一个字符串变量,这会弄糟。变量的类型是-@MMG。您能补充一个问题吗?您到底是如何完成所有过程的?输入和参数的一小部分示例?
subprocess.clas
-不正确
call
应使用,
clas
是一个输入错误。至于整个单词,你能试着用
r“\b{}\b”替换
word
。format(word)
?或
r“\”。格式(word)
?甚至可能是
r“[[::]]”。格式(word)
?您可以删除
“-w”
@WiktorStribiżew我尝试用
r“\b{}\b”替换
word
。format(word)
,而我仍然面临相同的isue
子流程。clas
-不正确
应使用调用
clas
是一个打字错误。至于整个单词,你能试着用
r“\b{}\b”替换
word
。format(word)
?或
r“\”。格式(word)
?甚至可能是
r“[[::]]”。格式(word)
?你可以删除
“-w”
@WiktorStribiżew我试着用
r“\b{}\b”替换
word
。format(word)
,但我仍然面临同样的问题。你能编辑代码使其成为有效的python吗,并解释为什么这样做?您可以在代码中使用注释来指出您的方法的不同之处,而不是使用星号。您可以编辑代码以使其成为有效的python,并解释为什么这样做?您可以在代码中使用注释来指示您的方法的不同之处,而不是使用星号