Как заменить символ в файле, найденный в регулярном выражении 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 шт):
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- возвращает копию строки, в которой заменены все вхождения указанной строки указанным значением