我知道使用正则表达式,例如
re.sub(r'[^\w]', '', string)
我可以从字符串中删除符号。但我现在想要的是删除所有其他符号,但用' - '替换空白。有没有办法做到这一点?
例如,
string = "Felix's 3D's"
# I want it as "Felixs-3D"
谢谢!
答案 0 :(得分:1)
如果要用-
替换空格,请忽略和str.replace:
print(re.sub(r'[^\w\s]', '',string).replace(" ","-"))
Felixs-3Ds
答案 1 :(得分:0)
您可以指定执行替换的功能:
def replace(match):
return '-' if match.group().isspace() else ''
re.sub(r'[^\w]', replace, string)
演示:
>>> import re
>>> def replace(match):
... return '-' if match.group().isspace() else ''
...
>>> string = "Felix's 3D's"
>>> re.sub(r'[^\w]', replace, string)
'Felixs-3Ds'
来自docs:
re.sub(pattern, repl, string, count=0, flags=0)
...
如果
repl
是一个函数,则每次非重叠都会调用它 发生模式。该函数采用单个匹配对象 参数,并返回替换字符串。
因此,replace
将收到每个匹配,如果是空格则返回'-'
,否则返回''
。