【问题标题】:How to remove tabs and newlines with a regex如何使用正则表达式删除制表符和换行符
【发布时间】:2013-04-27 16:04:01
【问题描述】:

在 Python 3.x 中,特殊的 re 序列 '\s' 匹配 Unicode 空白字符,包括 [ \t\n\r\f\v]。

以下代码旨在用空格替换制表符和换行符。

import re
text = """Hello my friends.
    How are you doing?
I'm fine."""
output = re.sub('\s', ' ', text)
print(output)

但是,该选项卡仍然存在于输出中。为什么?

【问题讨论】:

  • 您确定“制表符”不只是一堆空格吗?大多数(如果不是全部)IDE 用四个空格替换制表符。使用\t 作为选项卡,它会起作用。
  • ...但我的问题的重点是,'\s' 应该包括 ''、'\n' 和 '\t'
  • 是的,但是它将用空格替换每个空白字符。一组空间将仍然是一组空间。如果您想用单个空格替换一组空格字符,请改用r'\s+'
  • @user1975053 我们不知道。 SO上的内容是一堆空格。通过按 4 次向左箭头检查是否可以从 How 转到行首,如果可以,则这些是空格。
  • 您希望将制表符替换为一个空格,还是类似 4 个空格?

标签: python regex python-3.x


【解决方案1】:

问题是(可能)您的制表符只是一堆空格。

>>> re.sub(r"\s+", " ", text)
"Hello my friends. How are you doing? I'm fine."

【讨论】:

  • 这确实是我的问题,但它不在我的原始代码中。如何在 SO 问题中输入选项卡?
  • @user1975053 除了将选项卡表示为“\t”我不相信你可以。因此,您可以对您的问题做的最好的事情就是将您的字符串更改为“Hello my friends。\n\t你好吗?\n我很好。”
猜你喜欢
  • 1970-01-01
  • 2011-07-01
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
  • 2014-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多