2012-08-16 109 views
9

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

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

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

+2

如果它是一个文件,你可以用'open(file_name,'rU')'来读取它们,如果“\ r \ n”是4个字符,那么它们全都是''\ n'' – jamylak 2012-08-16 14:35:05

回答

15

我会建议使用splitlines,而不是一个正则表达式或查找/替换

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

这应该是解决方案 – geotheory 2015-12-19 13:29:10

0

对不起,我误解你的问题:

在这种情况下,你应该AR前缀的字符串使用原始字符串:

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

然后删除2将不会帮助/ – Stals 2012-08-16 14:38:03

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

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

+2

这对我没有帮助(ubuntu) – geotheory 2015-12-19 13:27:53

3

"\n".join(mytext.splitlines()) 这对我的作品。 mytext.replace(r"\r\n", r"\n"),这不行。

2

这是一个解决方案,如果以上任何一个都不起作用(这是我使用Python3的Anaconda分布的情况)。

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

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