Python 2.7 Python搜索特定单词的文件,并找到精确匹配和打印行

Python 2.7 Python搜索特定单词的文件,并找到精确匹配和打印行,python-2.7,Python 2.7,我写了一个脚本来打印包含圣经txt文件中某个特定单词的行。问题是我无法用该行获得确切的单词,而是打印该单词的所有变体 例如,如果我搜索“am”,它会打印包含“lame”、“name”等词的句子。 相反,我希望它只打印带有“am”的句子 i、 例如,“我是你的救世主”、“我在这里”等 以下是我使用的代码: import re text = raw_input("enter text to be searched:") shakes = open("bible.txt", "r") for li

我写了一个脚本来打印包含圣经txt文件中某个特定单词的行。问题是我无法用该行获得确切的单词,而是打印该单词的所有变体

例如,如果我搜索“am”,它会打印包含“lame”、“name”等词的句子。 相反,我希望它只打印带有“am”的句子

i、 例如,“我是你的救世主”、“我在这里”等

以下是我使用的代码:

import re
text = raw_input("enter text to be searched:")

shakes = open("bible.txt", "r")

for line in shakes:
    if re.match('(.+)'  +text+  '(.+)', line):
        print line 

我想如果您在
文本
之外的字符串中,放置如下空格:

'(.+) ' + text + ' (.+)'

如果我正确理解代码中发生的事情,那就可以了。

这是完成任务的另一种方法,它可能会很有帮助,尽管它不太符合您当前的方法

我输入的test.txt文件有四句话:

This is a special cat. And this is a special dog. That's an average    cat. But better than that loud dog.
运行程序时,请包含文本文件。在命令行中,这看起来像:

python file.py test.txt
这是附带的file.py文件:

import fileinput

key = raw_input("Please enter the word you with to search for: ")
#print "You've selected: ", key, " as you're key-word."

with open('test.txt') as f:
    content = str(f.readlines())

#print "This is the CONTENT", content

list_of_sentences = content.split(".")
for sentence in list_of_sentences:
    words = sentence.split(" ")
    for word in words:
        if word == key:
            print sentence
对于关键字“cat”,返回:

That is a special cat
That's an average cat
(注意句点不再存在)。

在这种情况下可能有用:

print re.findall(r"([^.]*?" + text + "[^.]*\.)", shakes.read())
甚至没有正则表达式:

print [sentence + '.' for sentence in shakes.split('.') if text in sentence]
读取此文本文件:

I am your saviour. Here I am. Another sentence.
Second line. 
Last line. One more sentence. I am done.
两者的结果相同:

['I am your saviour.', ' Here I am.', ' I am done.']

谢谢SparklePony成功了。我是个新手,刚刚开始。你能解释一下这段代码的区别是什么吗?这段代码的区别是它搜索的句子周围有空格的单词“am”。如果仔细查看
文本
周围的字符串,会添加空格,因此基本上不会找到“ham”,因为前面没有空格。我希望这个答案有意义。另外,如果你喜欢,你能点击这个答案旁边的复选标记吗?当你这么做的时候,意味着你喜欢给出的答案。(而且我得到了声誉。)对不起,我是stackoverflow新手,不知道tick。我如何才能将txt文件“bible.txt”作为输入,并将原始输入变量分配给key.thanks有几种方法,例如,逐行或一次获取所有内容。此版本一次获取所有内容。我已经更新了上面的示例,说明了这一点。感谢您的帮助,但是出现了一个错误“类型错误:预期的字符串或缓冲区”“返回\u编译(模式、标志)。findall(字符串)”