alo*_*oha 0 python regex string
我有以下字符串:
a = 'P/2008 A3 (SOHO)'
Run Code Online (Sandbox Code Playgroud)
我想将其更改为:
a = 'P/2008-A3-SOHO'
Run Code Online (Sandbox Code Playgroud)
尝试解决问题:
步骤1:
b = re.sub("\s", "-", a)
print b
Run Code Online (Sandbox Code Playgroud)
输出:
P/2008-A3-(SOHO)
Run Code Online (Sandbox Code Playgroud)
第2步:
c = re.sub("[\(\)]", "", b)
print c
Run Code Online (Sandbox Code Playgroud)
输出:
P/2008-A3-SOHO
Run Code Online (Sandbox Code Playgroud)
我得到了我需要的输出,但是有更有效的方法吗?我想一步解决它.
re.sub不仅接受第二个参数的字符串,还接受一个函数.该函数将匹配对象作为参数获取,函数的返回值用作替换字符串:
>>> re.sub(r"[()\s]", lambda m: '-' if m.group().isspace() else '', a)
'P/2008-A3-SOHO'
Run Code Online (Sandbox Code Playgroud)
顺便说一句,你不需要逃避(,)字符类中([...]).