用“\ n”替换“\ r \ n”

时间:2012-08-16 14:34:10

标签: python

我有一些文本数据打印出实际字符“\ r \ n”(总共四个字符)。我想用单个“\ n”字符替换这四个字符,但我似乎无法让Python为我做这件事。我正在尝试:

mytext.replace("\r\n", "\n")

但是只打印出“\ n”(两个字符,而不是一个字符)。我觉得我可能错过了一些明显的东西,但任何帮助都会受到赞赏。

7 个答案:

答案 0 :(得分:18)

我建议使用splitlines而不是regex或search / replace

"\n".join(mytext.splitlines())

答案 1 :(得分:16)

mytext.replace(r"\r\n", r"\n")

'r'表示一个原始字符串,它告诉python将文本中的反斜杠解释为文字字符而不是转义字符。

答案 2 :(得分:3)

"\n".join(mytext.splitlines()) 这适合我。 mytext.replace(r"\r\n", r"\n"),这不起作用。

答案 3 :(得分:2)

如果以上任何方法都不起作用,这是一个尝试的解决方案(我使用的是Anaconda Distribution of Python3就是这种情况)。

mytext.replace("\\r\\n", "\\n")

这与\用作转义字符有关。我认为使用原始字符串格式化程序的上述答案会实现相同的目的,但无论出于何种原因,这对我来说都不起作用,而且确实如此。

答案 4 :(得分:0)

抱歉,我误解了你的问题:

在这种情况下,您应该在字符串前面加上一个r来使用原始字符串:

mytext.replace(r"\r\n", r"\n")

答案 5 :(得分:0)

当您将文件读取为变量时,

python将自动将'\ r \ n'转换为'\ n',反之亦然。但是,如果您使用“二进制模式”写回文件,则python会将您的内容准确地写到文件。因此只需将文件读取为变量并以二进制模式写回即可在Windows平台中将“ \ r \ n”自动转换为“ \ n”。

file_name = 'test.sh'
file_content = ''
with open(file_name) as f:
    file_content = f.read()

with open(file_name, 'wb') as f:
    f.write(file_content)

答案 6 :(得分:0)


LINEBREAK = "\n"

with open(filename) as f:
    s = f.read()
    s = LINEBREAK.join(s.splitlines())
with open(new_filename, "wb") as f:
    f.write(s + "\n")

如果要将'\ r \ n'用作换行符,只需更改LINEBREAK