【发布时间】:2013-12-02 05:53:14
【问题描述】:
有没有办法将replace 与regex 一起使用,表示任意数量的任何空白(空白也可以是制表符)?我正在尝试以下方法将多个空白的任何扩展收缩为一个,但它不起作用:
mystring.replace('\s+', ' ')
【问题讨论】:
有没有办法将replace 与regex 一起使用,表示任意数量的任何空白(空白也可以是制表符)?我正在尝试以下方法将多个空白的任何扩展收缩为一个,但它不起作用:
mystring.replace('\s+', ' ')
【问题讨论】:
你不能在replace()方法中对字符串使用正则表达式,你必须使用re module:
import re
mystring = re.sub(r'\s+', ' ', mystring)
注意字符串文字前的r 前缀,这可以确保正确解释正则表达式中的反斜杠。它在这里实际上并没有什么不同,但是对于不同的转义序列,它可能会导致严重的问题。例如'\b' 是一个退格字符,而r'\b' 是一个反斜杠,后跟一个“b”,用于匹配正则表达式中的单词边界。
【讨论】:
尝试使用re.sub:
import re
result = re.sub('\s+', ' ', mystring)
【讨论】:
你可以使用str.split和str.join,使用正则表达式你需要re.sub:
>>> ' '.join('f o o\t\t bar'.split())
'f o o bar'
【讨论】:
试试这样的
import re
re.sub('\s+',' ',mystring)
【讨论】:
就这样。
import re
print re.sub(r'\s+', '_', 'hello there')
# => 'hello_there'
【讨论】: