使用 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 替换多个字符 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

re.sub 不替换匹配 [重复]

Python:re.sub()实现字符串替换

为re.sub替换参数转义Python正则表达式字符串? [复制]

Python正则替换字符串函数re.sub用法示例

使用re.sub将文本替换为匹配到的内容

re.sub()介绍和用法