【问题标题】:Replace any number of white spaces with a single white space [duplicate]用单个空格替换任意数量的空格[重复]
【发布时间】:2013-12-02 05:53:14
【问题描述】:

有没有办法将replaceregex 一起使用,表示任意数量的任何空白(空白也可以是制表符)?我正在尝试以下方法将多个空白的任何扩展收缩为一个,但它不起作用:

mystring.replace('\s+', ' ')

【问题讨论】:

    标签: python regex replace


    【解决方案1】:

    你不能在replace()方法中对字符串使用正则表达式,你必须使用re module

    import re
    mystring = re.sub(r'\s+', ' ', mystring)
    

    注意字符串文字前的r 前缀,这可以确保正确解释正则表达式中的反斜杠。它在这里实际上并没有什么不同,但是对于不同的转义序列,它可能会导致严重的问题。例如'\b' 是一个退格字符,而r'\b' 是一个反斜杠,后跟一个“b”,用于匹配正则表达式中的单词边界。

    【讨论】:

      【解决方案2】:

      尝试使用re.sub

      import re
      result = re.sub('\s+', ' ', mystring)
      

      【讨论】:

        【解决方案3】:

        你可以使用str.splitstr.join,使用正则表达式你需要re.sub

        >>> ' '.join('f  o  o\t\t bar'.split())
        'f o o bar'
        

        【讨论】:

        • 警告:如果字符串仅包含空白字符,则此方法无效。
        【解决方案4】:

        试试这样的

        import re
        re.sub('\s+',' ',mystring)
        

        【讨论】:

          【解决方案5】:

          就这样。

          import re
          print re.sub(r'\s+', '_', 'hello there')
          # => 'hello_there'
          

          【讨论】:

            猜你喜欢
            • 2012-12-28
            • 1970-01-01
            • 1970-01-01
            • 2011-01-28
            • 2011-01-05
            • 1970-01-01
            • 2013-07-03
            • 2019-08-03
            相关资源
            最近更新 更多