Используя str.find
, вы можете получить индекс строки соответствия:
>>> string = 'my name is luka 90/91, I live on the second floor'
>>> keyword = 'luka'
>>> string.find(keyword)
11
>>> i = string.find(keyword)
>>> string[i:i+len(keyword)+5]
'luka 90/9'
>>> string[i:i+len(keyword)+5+1] # +1 (count space in between)
'luka 90/91'
UPDATE Чтобы получить все вхождения, вам нужно найти подстроку в цикле.
string = 'my name is luka 90/91, I live on the second floor luka 12345'
keyword = 'luka'
i = 0
while True:
i = string.find(keyword, i) # `i` define from where the find start.
if i < 0:
break
j = i + len(keyword) + 5 + 1
print(string[i:j])
i = j
ОБНОВЛЕНИЕ решение с использованием re.findall
:
>>> string = 'my name is luka 90/91, I live on the second floor luka 12345'
>>> keyword = 'luka'
>>> import re
>>> re.findall(re.escape(keyword) + '.{5}', string)
['luka 90/9', 'luka 1234']
>>> re.findall(re.escape(keyword) + '.{6}', string)
['luka 90/91', 'luka 12345']
luka
матчей буквально. .{5}
соответствует любым 5 символам.
- Если вы хотите совместить символы, даже если они меньше 5 символов. Вместо этого используйте
.{1,5}
.
re.escape
не требуется для luka
. Это необходимо, если в регулярном выражении есть специальные символы, которые имеют особое значение.
Ключевое слово наряду со следующими пятью символами фактически будет ' 'Luka 90/9''. – jonrsharpe
Вы хотите напечатать все следующие 5 символов, когда появится слово «keyword»? или только первое появление? –