#python #replace #overwrite #re
Вопрос:
Я пытаюсь изменить |
символ с _
помощью текста файла и перезаписать результат.
Текст моего файла выглядит примерно так:
#Hello there|this is my text_to_modify
Итак, как вы можете видеть _
, уже присутствуют некоторые части текста, но я хочу изменить только |
символ.
Код, который я написал, это:
import re
with open(my_file,'r ') as f:
text = f.read()
text = re.sub('|', '_', text)
f.seek(0)
f.write(text)
f.truncate()
f.close()
и результат таков:
#Hello_there|this_is_my_text_to_modify
Что я могу сделать? Заранее спасибо за ответы.
Ответ №1:
Вам нужно избежать символа трубы:
text = re.sub('|', '_', text)
|
имеет особое значение в регулярных выражениях («или») и должен быть экранирован, чтобы использоваться буквально. Я не понимаю, как вы получили результат, о котором сообщили, потому что ваше регулярное '|'
выражение в основном говорит: «ничего не сопоставляйте или ничего и замените его подчеркиванием», поэтому в вашем выводе должны быть подчеркивания между всеми символами (где «ничего»).
Я рекомендую вам внимательно ознакомиться с отличной документацией по регулярным выражениям Python.
В качестве примечания, способ перезаписи исходного файла очень опасен: если вы что-то испортите, вы потеряете все содержимое исходного файла. Лучший вывод в новый файл.