正規表現は機能しますが、この問題にはやり過ぎだと思います。次の 2 つのリスト内包表記を使用したほうがよいでしょう。
sentence = 'The world is a small place, we should try to take care of it.'.split()
indices = (i for i,word in enumerate(sentence) if word=="place")
neighbors = []
for ind in indices:
neighbors.append(sentence[ind-3:ind]+sentence[ind+1:ind+4])
探している単語が文中に連続して複数回出現する場合、このアルゴリズムは連続して出現する単語を隣接単語として含めることに注意してください。
例えば:
[29]: 隣人 = []
[30] で: 文 = '世界は小さな場所です。私たちはそれを大事にしようとする必要があります.'.split()
In [31]: 文 Out[31]: ['The', 'world', 'is', 'a', 'small', 'place', 'place', 'place,', 'we', ' should', 'try', 'to', 'take', 'care', 'of', 'it.']
In [32]: indices = [i for i,word in enumerate(sentence) if word == 'place']
In [33]: for ind in indices:
....: neighbors.append(sentence[ind-3:ind]+sentence[ind+1:ind+4])
In [34]: neighbors
Out[34]:
[['is', 'a', 'small', 'place', 'place,', 'we'],
['a', 'small', 'place', 'place,', 'we', 'should']]