目录
Remove all non-numeric characters from a String in 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()
是一个正则表达式。
方括号[]
用于指示一组字符。
^
,则所有不在集合中的字符都将被匹配。换句话说,我们的集合匹配任何不是范围内数字的字符
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() 从字符串中删除所有非数字字符
这是一个三步过程:
- 使用生成器表达式迭代字符串。
- 使用
str.isdigit()
字符检查每个字符是否为数字。 - 使用该
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()
是一个正则表达式。
方括号[]
用于指示一组字符。
^
,则所有不在集合中的字符都将被匹配。换句话说,我们的集合匹配任何不是范围内的数字
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()
这是一个三步过程:
- 使用生成器表达式迭代字符串。
- 检查每个字符是数字还是点并返回结果。
- 使用该
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
计算为,否则计算为。True
x
s
False
生成器对象仅包含字符串中的数字和点。
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
变量中。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: