【问题标题】:Remove double space/tab combinations using Re in Python在 Python 中使用 Re 删除双空格/制表符组合
【发布时间】:2015-03-01 07:08:22
【问题描述】:

我想使用 Re 模块将 Python 中存在连续制表符和/或空格的所有实例替换为单个空格。我不想删除新行(这排除了 \s 推荐)。目前我有:

    formateed_string = re.sub("\t+" , " ", formateed_string)            
    formateed_string = re.sub(" +" , " ", formateed_string)         
    formateed_string = re.sub("\t " , " ", formateed_string)    
    formateed_string = re.sub(" \t" , " ", formateed_string)

即首先检查连续的空格,然后是连续的制表符,然后是制表符/空格,然后是空格/制表符。这似乎正常工作,但偶尔会留下一个双空格(我猜这意味着标签/空格存在异常污染,上述内容并未完全删除)。

有没有一种简单/更优雅的方式来实现这一点?

[注:运行 Python 2.7]

【问题讨论】:

    标签: python regex python-2.7


    【解决方案1】:

    下面的正则表达式将用一个空格替换连续的制表符或空格。请注意,它不会将单个选项卡转换为空格。

    formatted_string = re.sub("[\t ]{2,}", " ", formatted_string)
    

    【讨论】:

      【解决方案2】:

      在正则表达式中,如果将字符放在方括号内,则表示“这些字符中的任何一个”。所以"[\t ]+" 将匹配任何制表符和/或空格序列。

      formatted_string = re.sub("[\t ]+", " ", formatted_string)            
      

      【讨论】:

      • 这不会删除所有制表符和空格,而不仅仅是两个或多个连续的,因为+ 表示一个或更多?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 2019-12-21
      • 2011-03-06
      • 1970-01-01
      相关资源
      最近更新 更多