【问题标题】:Replace '\n' in a string in Python 2.7在 Python 2.7 中替换字符串中的 '\n'
【发布时间】:2015-05-28 20:53:56
【问题描述】:

这是我的文件.txt:

Egg and Bacon;
Egg, sausage and Bacon
Egg and Spam;
Spam Egg Sausage and Spam;
Egg, Bacon and Spam;

我想将 newLine '\n' 转换为 ' $ '。我刚用过:

f = open(fileName)
text = f.read()      
text = text.replace('\n',' $ ')
print(text)

这是我的输出:

$ Spam Egg Sausage and Spam;

我的输出必须是这样的:

Egg and Bacon; $ Egg, sausage and Bacon $ Egg ...

我做错了什么?我正在使用#-*- encoding: utf-8 -*-

谢谢。

【问题讨论】:

  • 无法复制;按预期工作。
  • 您的文本是否包含“\r”字符? print repr(text) 打印什么?我运行你的代码没有问题;它按预期对我有用。
  • print(repr(text)) = '鸡蛋和培根;\r\n鸡蛋、香肠和培根\r\n鸡蛋和垃圾邮件;\r\n垃圾鸡蛋香肠和垃圾邮件;\r\n'我做了这个更改“替换('\r\n','$')”,现在它工作正常!谢谢!!

标签: python string replace newline


【解决方案1】:

您的换行符可能表示为\r\n。为了替换它们,您应该这样做:

text.replace('\r\n', ' $ ')

对于同时适用于类 UNIX 系统(使用 \n)和 Windows(使用 \r\n)的可移植解决方案,您可以使用正则表达式替换文本:

>>> import re
>>> re.sub('\r?\n', ' $ ', 'a\r\nb\r\nc')
'a $ b $ c'
>>> re.sub('\r?\n', ' $ ', 'a\nb\nc')
'a $ b $ c'

【讨论】:

  • 附加评论:我建议先做text = text.replace('\r\n','\n'),然后再做text = text.replace('\n', ' $ ')。这适用于所有文件,适用于具有'\n' 行分隔符的文件和具有'\r\n' 行分隔符的文件。
  • 是的,我同意您的正则表达式解决方案更好。不过,我已经投了赞成票。
【解决方案2】:

您可以使用分割线。

lines = """Egg and Bacon;
Egg, sausage and Bacon
Egg and Spam;
Spam Egg Sausage and Spam;
Egg, Bacon and Spam;"""

print(" $ ".join(lines.splitlines()))
Egg and Bacon; $ Egg, sausage and Bacon $ Egg and Spam; $ Spam Egg Sausage and Spam; $ Egg, Bacon and Spam;

或者简单地使用 rstrip 并加入文件对象而不将所有内容读入内存:

with open("in.txt") as f: 
    print(" $ ".join(line.rstrip() for line in f))
    Egg and Bacon; $ Egg, sausage and Bacon $ Egg and Spam; $ Spam Egg Sausage and Spam; $ Egg, Bacon and Spam;

这比将所有文件读入内存并使用正则表达式更有效。您还应该始终使用with 打开您的文件,因为它会自动关闭它们。

rstrip 将删除 \n \r\n 等。

In [41]: s = "foo\r\n"
In [42]: s.rstrip()
Out[42]: 'foo'    
In [43]: s = "foo\n"    
In [44]: s.rstrip()
Out[44]: 'foo'

【讨论】:

    【解决方案3】:
    text = text.replace('\\n', '')
    

    【讨论】:

      猜你喜欢
      • 2015-02-04
      • 2019-09-04
      • 1970-01-01
      • 1970-01-01
      • 2021-09-26
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      • 1970-01-01
      相关资源
      最近更新 更多