Как создать программу, заменяющую символы новой строки в файле Python на строку

Я пытаюсь отобразить свой файл python в html и поэтому хотел бы заменять каждый раз, когда файл переходит на новую строку с помощью ‹br>, но программа, которую я написал, не работает.

Я посмотрел здесь и попытался немного изменить код, я получил разные результаты, но не те, которые мне нужны.


with open(path, "r+") as file:
    contents = file.read()
contents.replace("\n", "<br>")
print(contents)
file.close()

Я хочу, чтобы файл отображался ‹br> каждый раз, когда у меня появляется новая строка, но вместо этого код ничего не меняет в файле.


person Yann Kull    schedule 28.09.2019    source источник


Ответы (5)


Попробуй это:

import re

with open(path, "r") as f:
    contents = f.read()
    contents = re.sub("\n", "<br>", contents)
    print(contents)
person Shan Ali    schedule 28.09.2019

Вот пример работающей программы:

path = "example"
contents = ""

with open(path, "r") as file:
    contents = file.read()

new_contents = contents.replace("\n", "<br>")

with open(path, "w") as file:
    file.write(new_contents)

Ваша программа не работает, потому что метод replace не изменяет исходную строку; он возвращает новую строку. Также вам нужно записать новую строку в файл; python не сделает этого автоматически.

Надеюсь это поможет :)

P.S. оператор with автоматически закрывает файловый поток.

person kleinbottle4    schedule 28.09.2019

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

with open(path, "r+") as file:
    contents = file.read()

contents = contents.replace("\n", "<br>")

with open(path, "w+") as file:
    contents = file.write(contents)
person andole    schedule 28.09.2019

в этом фрагменте кода есть некоторые проблемы.

  1. contents.replace("\n", "<br>") вернет новый объект, который заменил \n на <br>, поэтому вы можете использовать html_contents = contents.replace("\n", "<br>") и print(html_contents)
  2. при использовании with файловый дескриптор закроется после выхода из блока с отступом.
person CSJ    schedule 28.09.2019

Заимствовано из этого сообщения:

import tempfile

def modify_file(filename):

      #Create temporary file read/write
      t = tempfile.NamedTemporaryFile(mode="r+")

      #Open input file read-only
      i = open(filename, 'r')

      #Copy input file to temporary file, modifying as we go
      for line in i:
           t.write(line.rstrip()+"\n")

      i.close() #Close input file

      t.seek(0) #Rewind temporary file to beginning

      o = open(filename, "w")  #Reopen input file writable

      #Overwriting original file with temporary file contents          
      for line in t:
           o.write(line)  

      t.close() #Close temporary file, will cause it to be deleted
person Mark Moretto    schedule 28.09.2019