如何在 Python 中删除字符串中的所有特殊字符?

2024 年 8 月 29 日 | 阅读 3 分钟

特殊字符是指除 字母数字空格 字符以外的任何字符。一些特殊字符的例子包括标点符号、符号和控制字符。某些特殊字符在正则表达式语法本身中可能具有特殊含义。例如,点字符(.) 是一个通配符,在正则表达式中匹配任何字符,所以如果你想匹配一个字面意义上的点字符,你需要用 反斜杠(\) 来转义它。请务必查阅你正在使用的 特定编程语言正则表达式引擎 的文档,以确定是否有任何字符需要转义或具有特殊含义。

示例

删除字符串中所有特殊字符的 Python 代码片段

输出

HelloHowareyou

在此示例中,我们使用了 re 模块,该模块在 Python 中提供了正则表达式支持。我们首先定义一个包含特殊字符的字符串。然后,我们使用 re.sub() 函数将所有非单词字符(由 \W 字符类表示)替换为空字符串。+ 量词意味着匹配一个或多个非单词字符。

结果字符串存储在 string_without_special_chars 变量中,然后我们将其打印到控制台。

注意:空格也被视为特殊字符,因此,如果你想保留它们,可以修改正则表达式,使其仅删除非字母数字字符。

示例

输出

Hello How are you

此正则表达式使用 ^ 字符匹配任何非 字母数字空格 的字符并将其删除。结果字符串将包含空格,但没有其他特殊字符。

正则表达式 r'\W+' 匹配字符串中一个或多个非单词字符。\W 字符类匹配任何非单词字符,包括标点符号、符号和空格。+ 量词意味着前面的字符类(在此例中为 \W)应该匹配一次或多次。

正则表达式的分解如下:

  • '\W': 匹配任何非单词字符,这包括除字母、数字和下划线之外的所有字符。
  • '+': 匹配前一个字符类一次或多次。

当我们将 re.sub() 函数用于将此正则表达式的所有匹配项替换为空字符串时,我们有效地从原始字符串中删除了所有非字母数字字符。

在修改后的正则表达式 r'[^a-zA-Z0-9\s]+ 中,方括号 [] 内的 ^ 字符表示我们要匹配该字符类中不包含的任何字符。在这种情况下,字符类包括所有大写和小写字母、数字和空格字符。此正则表达式有效地删除了所有非字母数字字符,但保留了空格。