使用Python中的Re删除双空格/制表符组合

时间:2015-01-03 01:32:16

标签: python regex python-2.7

我希望使用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)

,即首先检查连续的空格,然后检查连续的标签,然后检查标签/空格,然后检查空格/标签。这似乎正常工作,但偶尔会留下一个双重空间(我想这意味着有不寻常的标签/空间污染,上面没有完全删除)。

是否有一种简单/更优雅的方式来实现这一目标?

[n.b。运行Python 2.7]

2 个答案:

答案 0 :(得分:6)

以下正则表达式将使用单个空格替换连续的制表符或空格。请注意,它不会将单个标签转换为空格。

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

答案 1 :(得分:3)

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

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