使用 re.sub 替换多个字符 [重复]
Posted
技术标签:
【中文标题】使用 re.sub 替换多个字符 [重复]【英文标题】:Replace multiple characters using re.sub [duplicate] 【发布时间】:2020-06-26 06:56:33 【问题描述】:s = "Bob hit a ball!, the hit BALL flew far after it was hit."
我需要从 s 中去掉以下字符
!?',;.
如何使用 re.sub 实现这一点?
re.sub(r"!|\?|'|,|;|."," ",s) #doesn't work. And replaces all characters with space
谁能告诉我这是怎么回事?
【问题讨论】:
你真的在使用 Python 2 吗? 这能回答你的问题吗? Remove specific characters from a string in Python 【参考方案1】:问题是.
匹配所有字符,而不是文字'.'
。你也想逃避,\.
。
但更好的方法是不使用 OR 运算符|
,而是简单地使用字符组:
re.sub(r"[!?',;.]", ' ', s)
【讨论】:
re.sub(r"!|\?|'|,|;|\."," ",s) 我忘了。是匹配所有字符。谢谢我在'。现在可以正常使用了 @Wkhan 请考虑使用我提供的第二个选项,它更具可读性和效率(只有 60 步,而 338 步!)请参阅here【参考方案2】:不需要正则表达式,你可以用简单的str.replace()来做,像这样:
chars_to_replace = "!?',;."
def replace(text):
for char in chars_to_replace:
if char in text:
text = text.replace(char, "")
return text
my_text = "Bob hit a ball!, the hit BALL flew far after it was hit."
print replace(my_text)
// Bob hit a ball the hit BALL flew far after it was hit
【讨论】:
以上是关于使用 re.sub 替换多个字符 [重复]的主要内容,如果未能解决你的问题,请参考以下文章