有没有办法使用replace
和regex
表示任意数量的空白区域(空白而且还有标签)?我正在尝试以下方法将多个空格的任何扩展收缩为一个,但它不起作用:
mystring.replace('\s+', ' ')
答案 0 :(得分:4)
您不能在replace()
方法中使用正则表达式来表示字符串,您必须使用re module:
import re
mystring = re.sub(r'\s+', ' ', mystring)
请注意字符串文字前面的r
前缀,这样可以确保正则表达式中的反斜杠得到正确解释。它实际上并没有区别,但对于不同的转义序列,它可能会导致严重的问题。例如'\b'
是退格符,但r'\b'
是反斜杠,后跟'b',用于匹配正则表达式中的单词边界。
答案 1 :(得分:1)
尝试使用re.sub
:
import re
result = re.sub('\s+', ' ', mystring)
答案 2 :(得分:1)
您可以使用str.split
和str.join
来使用您需要的正则表达式re.sub
:
>>> ' '.join('f o o\t\t bar'.split())
'f o o bar'
答案 3 :(得分:0)
尝试这样的事情
import re
re.sub('\s+',' ',mystring)
答案 4 :(得分:0)
就像这样。
import re
print re.sub(r'\s+', '_', 'hello there')
# => 'hello_there'