Python 2.7 选择围绕关键字的句子

Python 2.7 选择围绕关键字的句子,python-2.7,Python 2.7,我是Python初学者。我想弄明白,但失败了。我需要在文本文件中找到一个关键字。如果在整个文本的任何部分都有关键字,那么我需要选择围绕关键字的句子,包括关键字。句子的数量是任意的,所以可能是5或10。句子之间可能有一条空格,所以我也需要把空行括起来。 例如: 让我们来谈谈:赔偿 让输入文本为: “我们征集和获取代理的附带费用,包括偿还银行和经纪人向其委托人发送代理材料的费用,将由我们承担。我们的官员和员工可以亲自或通过邮件、电话和其他通信方式索取代理人,而无需额外补偿。” 我想要的输出例如:“附

我是Python初学者。我想弄明白,但失败了。我需要在文本文件中找到一个关键字。如果在整个文本的任何部分都有关键字,那么我需要选择围绕关键字的句子,包括关键字。句子的数量是任意的,所以可能是5或10。句子之间可能有一条空格,所以我也需要把空行括起来。

例如:

让我们来谈谈:赔偿

让输入文本为:

“我们征集和获取代理的附带费用,包括偿还银行和经纪人向其委托人发送代理材料的费用,将由我们承担。我们的官员和员工可以亲自或通过邮件、电话和其他通信方式索取代理人,而无需额外补偿。”

我想要的输出例如:“附带成本。。。补偿沟通。”

我试图使用这个:p=re.compile(r'[^.]compensation[^.]+.')p.findall(text)


使用上述代码,我只能选择包含关键字的句子。我需要的是选择围绕关键字的句子。我需要控制包含关键字的句子前后的句子数。例如,如果我想在包含关键字的句子之前选择两个句子,那么获取关键字,以及包含关键字的句子后的两个句子,我应该怎么做?

假设您的输入结构如下:

然后,您需要首先选择完整的句子,每个匹配的句子可能以您的关键字开头,以您的关键字结尾,以您的关键字开头和结尾(虽然不太可能)。然后您选择之前和之后的数字

import re

s = open('text.txt', 'r').read()
p = re.compile(r'(([^\.]*\.){2}[^\.]*compensation[^\.]*\.([^\.]*\.){3})')
for i in p.findall(s):
  print("match='" + i[0] + "'")
因为我们使用的是组元字符“(‘and’”),findall()将返回这些元组的列表,而不是我们想要的。因此,我们在整个正则表达式周围添加了一个组(这必然是第一个组,因为它是最外层的)

编辑:另一种可能是使用非捕获组(?:…)。findall()将只返回与这些组完全匹配的结果

允许(2)之前和(3)之后匹配的数字或句子发生变化只是一个练习(使用Python的字符串格式工具应该很容易做到)

输出 match='天哪,我们的邀约和 获得代理,包括偿还银行和 将代理材料转发给其委托人的经纪人 由我方承担。委托书可由 我们的官员和员工,无论是亲自还是通过邮件、电话和电子邮件 其他的交流方式,天哪

match='C.D.我的报酬就是你的报酬.E.F.G.'

使用的文本 天哪,天哪,神圣的培根,我们的招揽和交易附带的费用 获得代理,包括偿还银行和 将代理材料转发给其委托人的经纪人 由我方承担。委托书可由 我们的官员和员工,无论是亲自还是通过邮件、电话和电子邮件 其他的交流方式。我的天啊。感觉很好。很好。 丛林之王

我的报酬是你的报酬。 Lllme