我有一个脚本,给我的句子包含一个指定的关键字列表。句子被定义为两个句点之间的任何东西。在
现在我想用它来选择一个句子,比如“把1.5克的粉末放进去”,如果粉末是一个关键词,它会得到整个句子,而不是“5克粉末”
我想知道如何表达句子介于句点和空格之间。我的新过滤器是:
def iterphrases(text):
return ifilter(None, imap(lambda m: m.group(1), finditer(r'([^\.\s]+)', text)))
但是现在我不再打印任何句子,只打印单词的片段/短语(包括我的关键词)。我很困惑我做错了什么。在
这里你得到它作为迭代器。与我的测试用例一起工作。它认为一个句子在句点之前是任何东西(非贪心的),句点后面要么是空格,要么是行尾。在
如果您确定
.
除了句子分隔符之外什么都没有用,并且每个相关的句子都以句点结尾,那么下面的方法可能会有用:如果您不必使用迭代器,re.split对于您的用例(句子的自定义定义)来说会更简单一些:
注意,最后一句话将包括
^{pr2}$.
或将为空(如果text
在最后一个句点后以空格结尾),为了解决这个问题:还要看一下Python - RegEx for splitting text into sentences (sentence-tokenizing)的答案中更一般的情况
对于一个完全通用的解决方案,您需要一个适当的句子标记器,例如^{}
相关问题 更多 >
编程相关推荐