如何制作一个用字符串替换 python 文件中的换行符的程序

How to make a program that replaces newlines in python file with a string

我正在尝试在 html 中显示我的 python 文件,因此每次文件跳转到换行符时我都想用 < br> 替换,但我编写的程序是不工作。

我看过这里并尝试稍微更改代码我得到了不同的结果,但不是我需要的结果。


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

我希望每次换行时都显示文件,但代码不会对文件进行任何更改。

试试这个:

import re

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

您的代码从文件中读取,将内容保存到变量并替换换行符。但是结果没有保存在任何地方。要将结果写入文件,您必须打开文件进行写入。

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

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

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

借自this post:

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

此代码段中存在一些问题。

  1. contents.replace("\n", "<br>") 将 return 一个用 <br> 替换 \n 的新对象,因此您可以使用 html_contents = contents.replace("\n", "<br>")print(html_contents)
  2. 当您使用 with 时,文件描述符将在离开缩进块后关闭。

这是一个有效的示例程序:

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方法没有修改原始字符串;它 returns 一个新字符串。 另外,您需要将新字符串写入文件; python 不会自动完成。

希望这对您有所帮助:)

P.S。 with 语句自动关闭文件流。