如何删除外部文件中的换行符?

时间:2013-01-17 18:06:55

标签: python

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

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不是很熟练;谢谢!

2 个答案:

答案 0 :(得分:3)

您的代码存在一些缺陷:

  • f最后没有关闭
  • 你只替换\r,而忽略了Windows上的\n - 我认为这是你的“隐形”角色(windows使用\r\n作为文本文件中的换行符,linux {{1} }和Mac \n

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

\r

答案 1 :(得分: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是使用Universal Newline Support构建的,这是默认的。