【发布时间】:2018-07-18 16:03:42
【问题描述】:
假设我有如下文本。
纽约市通常称为纽约市或简称纽约 美国人口最多的城市。估计 人口 8537673 分布在约 3026 的土地上 平方英里(784 平方公里) 纽约市也是最密集的 美国人口稠密的主要城市。
我想定位搜索词出现前后的 n 个单词。例如,n=3 并搜索 term="New York",则
第一次出现:
- 前面的词 = {The, city, of}
- 后面的词 = {经常,叫,新}
第二次出现:
- 前面的词 = {York,经常,叫}
- 后面的单词 = {City,或者,简单地说}
第三次出现:
- 前面的词 = {城市,或者,简单地说}
- 后面的单词 = {is, the, most}
第 4 次出现:
- 前面的单词 = {miles, 784, km2}
- 后面的单词 = {City, is, also}
如何使用正则表达式来做到这一点?我在这里Extract words surrounding a search word 发现了一个类似的问题,但它没有考虑多次出现的搜索词。
尝试:
def search(text,n):
word = r"\W*([\w]+)"
groups = re.search(r'{}\W*{}{}'.format(wordn,'place',wordn), text).groups() return groups[:n],groups[n:]
【问题讨论】:
-
我在今天之前看到过这个问题。这是家庭作业。你试过正则表达式了吗?
-
我已经尝试了我提到的链接中给出的正则表达式,但它没有考虑多次出现的搜索词
标签: regex