这是我正在使用的文本文件的示例:
<Opera>
Tristan/NNP
and/CC
Isolde/NNP
and/CC
the/DT
fatalistic/NN
horns/VBZ
The/DT
passionate/JJ
violins/NN
And/CC
ominous/JJ
clarinet/NN
;/:
正斜杠后面的大写字母是奇怪的标签。我希望能够在文件中搜索诸如 "NNP,CC,NNP"
之类的内容,并让程序返回此段 "Tristan and Isolde"
(这三个词)与这三个标签相匹配的一行。
我遇到的问题是我希望用户输入搜索字符串,因此它总是不同的。
我可以读取文件并找到一个匹配项,但我不知道如何从该点向后计数以打印第一个单词或如何查找下一个标签是否匹配。
最佳答案
从要搜索的标签列表动态构建正则表达式:
text = ("Tristan/NNP and/CC Isolde/NNP and/CC the/DT fatalistic/NN horns/VBZ "
"The/DT passionate/JJ violins/NN And/CC ominous/JJ clarinet/NN")
tags = ["NNP", "CC", "NNP"]
tags_pattern = r"\b" + r"\s+".join(r"(\w+)/{0}".format(tag) for tag in tags) + r"\b"
# gives you r"\b(\w+)/NNP\s+(\w+)/CC\s+(\w+)/NNP\b"
from re import findall
print(findall(tags_pattern, text))
关于python - 在 python 中导航文本文件搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9143406/