从 Python 中的字符串中删除除空格之外的特殊字符

目录

Remove special characters except Space from String in Python

  1. 从 Python 中的字符串中删除除空格之外的特殊字符
  2. 从文本、文件或多行字符串中删除除空格之外的特殊字符
  3. 使用 str.isalnum() 从字符串中删除除空格之外的特殊字符
  4. 在 Python 中拆分所有特殊字符的字符串

去除Python中String中除空格以外的特殊字符

使用该re.sub()方法从字符串中删除除空格之外的所有特殊字符。

re.sub()方法将通过用空字符串替换它们来删除除空格之外的所有特殊字符。

主程序
import re a_string = 'b!o@b#b$y% h^a&d*z( c.o,m' new_string = re.sub(r'[^a-zA-Z0-9\s]+', '', a_string) print(new_string) # 👉️ 'bobby hadz com'

re.sub方法返回一个新字符串该字符串是通过用提供的替换替换模式的出现而获得的。

我们传递给该方法的第一个参数re.sub()是一个正则表达式。

方括号[]用于指示一组字符。

主程序
import re a_string = 'b!o@b#b$y% h^a&d*z( c.o,m' new_string = re.sub(r'[^a-zA-Z0-9\s]+', '', a_string) print(new_string) # 👉️ 'bobby hadz com'
字符代表字母的小写和大写范围a-zA-Z

字符0-9与范围内的数字相匹配。

\s字符匹配 Unicode 空白字符,例如 [ \t\n\r\f\v].

^集合开头的插入符号表示“NOT”。换句话说,匹配所有非字母、非数字和非空格并将它们替换为空字符串(删除它们)。

如果要保留它们,可以在方括号之间添加更多字符。

如果您在阅读或编写正则表达式时需要帮助,请参阅

官方文档中的
正则表达式语法副标题。

该页面包含所有特殊字符的列表以及许多有用的示例。

从文本、文件或多行字符串中删除除空格之外的特殊字符

从文本、文件或多行字符串中删除除空格之外的特殊字符:

  1. 使用str.splitlines()方法将文本拆分为行列表。
  2. 使用for循环遍历列表。
  3. 使用该re.sub()方法去除每行中除空格之外的特殊字符。
主程序
import re text = """b!o@b#b%y h^a*d&z dot c.o,m """ a_list = [] for line in text.splitlines(): updated_line = re.sub(r'[^a-zA-Z0-9\s]+', '', line) print(updated_line) a_list.append(updated_line) print(a_list) # 👉️ ['bobby hadz', 'dot com'] updated_text = '\n'.join(a_list) # bobby hadz # dot com print(updated_text)

str.splitlines方法在换行符处拆分字符串并返回包含字符串中行的列表。

主程序
multiline_str = """\ bobby hadz com""" lines = multiline_str.splitlines() print(lines) # 👉️ ['bobby', 'hadz', 'com']

最后一步是使用该str.join()方法加入带有换行符 ( ) 字符分隔符的更新行列表\n

str.join方法将一个可迭代对象作为参数并返回一个字符串,该字符串是可迭代对象中字符串的串联

调用该方法的字符串用作元素之间的分隔符。

或者,您可以使用该str.isalnum()方法。

使用 str.isalnum() 从字符串中删除除空格之外的特殊字符

这是一个三步过程:

  1. 使用生成器表达式迭代字符串。
  2. 检查每个字符是字母数字字符还是空格。
  3. 使用该str.join()方法将匹配的字符连接成一个字符串。
主程序
a_string = 'b!o@b#b$y% h^a&d*z( c.o,m' new_string = ''.join(char for char in a_string if char.isalnum() or char.isspace()) print(new_string) # 👉️ bobby hadz com

我们使用
生成器表达式
来迭代字符串。

生成器表达式用于对每个元素执行某些操作或选择满足条件的元素子集。

在每次迭代中,我们使用该str.isalnum()方法检查当前字符是否为字母数字。

如果字符串中的所有字符都是字母数字并且字符串至少包含一个字符,则str.isalnum方法
返回,否则,该方法返回
TrueFalse

主程序
print('bobby123'.isalnum()) # 👉️ True # 👇️ contains space print('bobby hadz'.isalnum()) # 👉️ False

我们还使用布尔 OR运算符来保留空白字符。

主程序
a_string = 'b!o@b#b$y% h^a&d*z( c.o,m' new_string = ''.join(char for char in a_string if char.isalnum() or char.isspace()) print(new_string) # 👉️ bobby hadz com

str.isspace
方法返回
如果字符串中只有空白字符且至少有一个字符,否则
返回TrueFalse

主程序
print(' '.isspace()) # 👉️ True print(''.isspace()) # 👉️ False print('b'.isspace()) # 👉️ False

最后一步是使用该str.join()方法将剩余的字符连接成一个字符串。

在 Python 中根据所有特殊字符拆分字符串

使用该re.split()方法在所有特殊字符上拆分字符串。

re.split()方法接受一个模式和一个字符串,并在每次出现该模式时拆分该字符串。

主程序
import re my_str = "hello<one!two>three.four!five'six" my_list = re.split(r'[`!@#$%^&*()_+\-=\[\]{};\':"\\|,.<>\/?~]', my_str) # 👇️ ['hello', 'one', 'two', 'three', 'four', 'five', 'six'] print(my_list)

我们使用re.split方法根据所有出现的特殊字符拆分字符串。

方括号用于指示一组字符。

确保您认为特殊字符的所有字符都在集合中。

您可以根据您的用例添加或删除字符。

或者,您可以使用匹配任何非字母、数字或空格的字符的正则表达式。

主程序
import re my_str = "hello<one!two>three.four!five'six" my_list = re.split(r'[^a-zA-Z0-9\s]', my_str) # 👇️ ['hello', 'one', 'two', 'three', 'four', 'five', 'six'] print(my_list)

^集合开头的插入符号表示“NOT”。换句话说,匹配所有非小写字母a-z、大写字母A-Z、数字
0-9或空白\s字符的字符。

您可以在正则表达式的方括号之间添加任何您不想匹配的字符。

您可以根据您的用例调整正则表达式。

文档的
这一部分包含有关每个特殊字符的作用的信息。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: