заменить текст в регулярном выражении на индекс

Я ищу с регулярным выражением

регулярное выражение дает несколько результатов

Я просто хочу заменить его своим текстом в указанном индексе

pattern = '@name'
replace = '*rep*'

текст

@name
@name
@name

Результат хочу index=2

@name
*rep*
@name

person Nima    schedule 24.02.2020    source источник
comment
stackoverflow.com/questions/35091557 /   -  person Umesh Sharma    schedule 24.02.2020


Ответы (1)


Используя .findall, вы получите список, замените элемент списка, используя предпочтительный индекс, и используйте .join, чтобы получить окончательные ожидаемые результаты.

>>> import re
>>> pattern = '@name'
>>> replace = '*rep*'
>>> text = '''@name
@name
@name'''
>>> re.findall(pattern,text)
['@name', '@name', '@name']
>>> index = 2
>>> re.findall(pattern,text)[index-1] = replace # use '-1' as index starts from zero
>>> text_list = re.findall(pattern,text)
>>> text_list[index-1] = replace
>>> ' '.join(text_list)
'@name *rep* @name'
person shaik moeed    schedule 24.02.2020