如何利用 python 提取字符串中的数字?

关注者
5
被浏览
20,125

4 个回答

在本教程中,我们将通过一些示例来学习 Python 中如何在字符串中查找数字。

使用 isdigit()、isdecimal()、isnumeric()

isdigit()、isdecimal()、isnumeric() 都可以检测字符串是否只由数字组成。

「区别:」

  • isdecimal():是否为十进制数字符,包括Unicode数字、双字节全角数字,不包括罗马数字、汉字数字、小数;
  • isdigit():是否为数字字符,包括Unicode数字,单字节数字,双字节全角数字,不包括汉字数字,罗马数字、小数
  • isnumeric():是否所有字符均为数值字符,包括Unicode数字、双字节全角数字、罗马数字、汉字数字,不包括小数。
str1 = "Python4you123"
str_num = []
for m in str1:
    if m.isdigit(): # 或 m.isdecimal() 或 m.isnumeric()
        str_num.append(m)
print(str_num) # 输出:['4', '1', '2', '3']

使用正则表达式

通过 Python 中的 re 模块,使用正则表达式“[0-9]”和 re.findall() 方法从字符串中获取所有数字。

[0-9] 表示查找从 0 到 9 匹配的所有字符。

import re
str1 = "Python4you123"
str_num = []
str_num = re.findall('[0-9]', str1)
print(str_num) # 输出:['4', '1', '2', '3']

使用 nums_from_string 模块

创建一个包含所有数字字符串格式的列表,使用 in 检查字符串中的字符是否包含在列表中。

import nums_from_string
str1 = "Python4you123"
print(nums_from_string.get_nums(str1))  # 输出:[4, 123]

使用所有数字列表

使用 If 语句检查行数、列数是不是第一列或第一行或是不是最后一列或最后一行。如果任一条件成立,输出“1”,否则,输出“0”。

numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
str1 = "Python4you123#"
str_num = []
for m in str1:
    if m in numbers:
        str_num.append(m)
print(str_num) # 输出:['4', '1', '2', '3']

使用 ord() 函数

以一个字符串(Unicode 字符)作为参数,返回对应的 ASCII 数值,检测这些数值是否在 ASCII 数值范围内。

numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
str1 = "Python4you123#"
str_num = []
for m in str1:
     if ord(m) in range(48,58):
        str_num.append(m)
print(str_num) # 输出:['4', '1', '2', '3']
❝ 文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈。