20

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

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

但这只会打印出“\n”(两个字符,而不是一个)。我觉得我可能遗漏了一些明显的东西,但任何帮助将不胜感激。

4

7 回答 7

29

我建议使用分割线而不是正则表达式或搜索/替换

"\n".join(mytext.splitlines())
于 2012-08-16T15:08:15.390 回答
17
mytext.replace(r"\r\n", r"\n")

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

于 2012-08-16T14:37:24.687 回答
3

"\n".join(mytext.splitlines()) 这对我有用。 mytext.replace(r"\r\n", r"\n"),这行不通。

于 2013-11-04T08:40:15.230 回答
2

如果上述任何一项都不起作用,这是一个尝试的解决方案(我使用 Python3 的 Anaconda 发行版就是这种情况)。

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

这与 \ 被用作转义字符有关。我认为使用原始字符串格式化程序的上述答案会达到同样的效果,但无论出于何种原因,这对我不起作用,而这确实有效。

于 2017-02-27T18:18:35.120 回答
0

对不起,我看错了你的问题:

在这种情况下,您应该在字符串前面加上 ar 以使用原始字符串:

mytext.replace(r"\r\n", r"\n")
于 2012-08-16T14:36:34.813 回答
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)
于 2020-12-02T01:58:27.620 回答
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.

于 2020-12-03T01:31:38.737 回答