Как заменить символ и перезаписать исходный файл

#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.

В качестве примечания, способ перезаписи исходного файла очень опасен: если вы что-то испортите, вы потеряете все содержимое исходного файла. Лучший вывод в новый файл.