从 Python 中的字符串中删除所有非数字字符

目录

Remove all non-numeric characters from a String in Python

  1. 从 Python 中的字符串中删除所有非数字字符
  2. 删除除“.”之外的非数字字符 在 Python 中

从 Python 中的字符串中删除所有非数字字符

使用该re.sub()方法从字符串中删除所有非数字字符。

re.sub()方法将通过用空字符串替换它们来从字符串中删除所有非数字字符。

主程序
import re my_str = 'bo_1bby_2_ha_3_dz.com' result = re.sub(r'[^0-9]', '', my_str) print(result) # 👉️ '123'

如果您需要删除除点“.”之外的所有非数字字符* * ,请单击以下副标题。

我们使用该re.sub()方法从字符串中删除所有非数字字符。

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

主程序
import re my_str = '1bobby, 2hadz, 3com' result = re.sub(r'[^0-9]', '', my_str) print(result) # 👉️ 123

如果未找到模式,则按原样返回字符串。

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

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

如果集合的第一个字符是 caret ^,则所有不在集合中的字符都将被匹配。

换句话说,我们的集合匹配任何不是范围内数字的字符
0-9

我们传递给该方法的第二个参数re.sub()是每个匹配项的替换。

主程序
import re my_str = 'bo_1bby_2_ha_3_dz.com' result = re.sub(r'[^0-9]', '', my_str) print(result) # 👉️ '123'

我们想删除所有非数字字符,因此我们用一个空字符串替换每个字符。

字符集也有简写[^0-9]

主程序
import re my_str = 'a1s2d3f4g5' result = re.sub(r'\D', '', my_str) print(result) # 👉️ '12345'

特殊字符\D匹配任何不是数字的字符。它与[^0-9]字符集非常相似,但包含更多的数字字符。

使用 join() 从字符串中删除所有非数字字符

这是一个三步过程:

  1. 使用生成器表达式迭代字符串。
  2. 使用str.isdigit()字符检查每个字符是否为数字。
  3. 使用该str.join()方法将数字连接成一个字符串。
主程序
my_str = 'bo_1bby_2_ha_3_dz.com' result = ''.join(char for char in my_str if char.isdigit()) print(result) # 👉️ '123'

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

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

在每次迭代中,我们使用该str.isdigit()方法检查当前字符是否为数字并返回结果。

生成器对象仅包含字符串中的数字。

主程序
my_str = 'bo_1bby_2_ha_3_dz.com' # 👇️ ['1', '2', '3'] print(list(char for char in my_str if char.isdigit()))

最后一步是将数字连接成一个字符串。

主程序
my_str = 'bo_1bby_2_ha_3_dz.com' result = ''.join(char for char in my_str if char.isdigit()) print(result) # 👉️ '123'

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

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

出于我们的目的,我们join()在一个空字符串上调用该方法以在没有分隔符的情况下连接数字。

删除除“.”之外的非数字字符 在 Python 中

如果需要去掉除“.”以外的非数字字符,使用方法
re.sub()

主程序
import re my_str = 'a3.1b4c' result = re.sub(r'[^0-9.]', '', my_str) print(result) # 👉️ '3.14'
如果您希望避免使用正则表达式,请向下滚动到下一个副标题。

我们使用该re.sub()方法从字符串中删除除点之外的所有非数字字符。

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

如果未找到模式,则按原样返回字符串。

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

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

如果集合的第一个字符是 caret ^,则所有不在集合中的字符都将被匹配。

换句话说,我们的集合匹配任何不是范围内的数字
0-9或点的字符。

我们传递给该方法的第二个参数re.sub()是每个匹配项的替换。

主程序
import re my_str = 'a3.1b4c' result = re.sub(r'[^0-9.]', '', my_str) print(result) # 👉️ '3.14'

我们想删除所有非数字字符或点,所以我们用一个空字符串替换每个。

范围也有简写0-9

主程序
import re my_str = 'a3.1b4c' result = re.sub(r'[^\d.]', '', my_str) print(result) # 👉️ '3.14'

\d字符匹配任何 Unicode 十进制数字。这包括[0-9], 和许多其他数字字符。

删除除“.”之外的所有非数字字符 来自 String 使用 join()

这是一个三步过程:

  1. 使用生成器表达式迭代字符串。
  2. 检查每个字符是数字还是点并返回结果。
  3. 使用该str.join()方法加入通过测试的字符。
主程序
my_str = 'a3.1b4c' result = ''.join(char for char in my_str if char in '123456789.') print(result) # 👉️ '3.14'

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

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

在每次迭代中,我们检查当前字符是数字还是点并返回结果。

in 运算符测试成员资格。例如,如果是 的成员
,则
x in s计算为,否则计算为TruexsFalse

生成器对象仅包含字符串中的数字和点。

主程序
my_str = 'a3.1b4c' # 👇️ ['3', '.', '1', '4'] print(list(char for char in my_str if char in '123456789.'))

最后一步是将数字和点连接成一个字符串。

主程序
my_str = 'a3.1b4c' result = ''.join(char for char in my_str if char in '123456789.') print(result) # 👉️ '3.14'

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

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

出于我们的目的,我们join()在一个空字符串上调用该方法来连接数字和没有分隔符的点。

for使用循环从字符串中删除所有非数字字符

您还可以使用for 循环从字符串中删除非数字字符。

主程序
my_str = 'bo_1bby_2_ha_3_dz.com' result = '' for char in my_str: if char.isdigit(): result += char print(result) # 👉️ 123

我们声明了一个新变量并将其初始化为空字符串。

在循环的每次迭代中for,我们检查当前字符是否为数字。

如果满足条件,我们将字符添加到result变量中。

for使用循环从字符串中删除除点之外的所有非数字字符

可以使用相同的方法从字符串中删除除点之外的所有非数字字符.

主程序
my_str = 'a3.1b4c' result = '' for char in my_str: if char.isdigit() or char == '.': result += char print(result) # 👉️ 3.14

在每次迭代中,我们检查当前字符是数字还是句点。

如果满足条件,我们将字符添加到result变量中。

额外资源

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