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

Пытаюсь заменить символ через регулярное выражение, но выдает ошибку, так как re.search является объектом соответствия, а не строкой. Есть регулярка, которая находит фразу до нижнего подчеркивания. Не могу разобраться, как можно через регулярное выражение поменять последний символ, _ к примеру на -.

import os
import re
for root, dirs, files in os.walk("C:/test/"):
    for file in files:
        if file.endswith(".txt"):
             filepath = os.path.join(root, file)
             with open(filepath, 'r+', encoding='windows-1251') as f:
                 text = f.read()
                 result=re.search(r"(Началофразы)\s*(.*?)\s*(?!\1)(?:[_])",text)            
                 print(result)


             with open(filepath, 'w', encoding='windows-1251') as f:

Дальше возникают сложности, так как непонятно, как изменить сам символ в регулярке и сохранить новую фразу обратно в файл. Буду признателен за любую помощь!

Текущее регулярное выражение выводит из файла из строки

 *<Test test="1231_1234" Началофразы="12345_12345"/>*

Начало фразы="12345_

Ответы (1 шт):

Автор решения: Violet
import re

a = '<Test test="1231_1234" Началофразы="12345_12345"/>'
print(''.join(re.findall(r'\s[а-яА-Я]*\W*\d*[_]', a)).replace('"', '').replace(' ', '').replace('_', '-'))
  • join - отвечает за объединение списка строк с помощью определенного указателя

  • re.findall - возвращает список всех найденных совпадений

  • \s - пробел

  • [а-яА-Я]* - любые символы от a до я или от A до Я несколько подряд

  • \W* - что-нибудь, кроме буквы, цифры или символа подчеркивания несколько подряд

  • \d* - любая десятичная цифра несколько подряд

  • [_] - Соответствует символу _

  • replace - возвращает копию строки, в которой заменены все вхождения указанной строки указанным значением

https://regex101.com/r/xJY6np/1

→ Ссылка