1

在我试图替换的文本文件中,我试图删除一个额外的换行符,即。转变

test="
123"

test="123"

我目前拥有的是:

f = open("file.txt")
o = open("newfile.txt","w")
while 1:
  line = f.readline()
  if not line: break
  line = line.replace('test="\r','test="')
  o.write(line)
o.close()

问题是它返回

  test="123"

<"> 和 <123> 之间有一个不可见的字符。有没有更好的替代我目前正在做的事情?我对 python 不是很精通;谢谢!

4

2 回答 2

3

您的代码有一些缺陷:

  • f 最后没有关闭
  • 你只替换\r,忽略\nwindows - 这是你的“隐形”字符我认为(windows在文本文件,linux和Mac\r\n中用作换行符)\n\r

这是另一个版本(可能接近您想要的版本;)):

with file("file.txt", "r") as f:
    with file("newfile.txt", "w") as o:
        o.write("".join(s.replace("\r", "").replace("\n","") 
                for s in f.readlines()))
于 2013-01-17T18:25:54.863 回答
0

最好的方法(在我看来)是启用Universal Newline Support。然后,这将使您的代码适用于在任何操作系统(Windows、Mac 或 Linux)上创建的文件。

为此,您在读取和写入文件时添加“U”规范。在您的示例中:

with open("file.txt", "rU") as f:
    with open("newfile.txt","w") as o: 
        for line in f.readlines():
            o.write(line.replace("\n", ""))

这要求 Python 是使用通用换行支持构建的,这是默认设置。

于 2013-01-17T18:41:21.420 回答