📜  从给定的字符串中提取所有整数(1)

📅  最后修改于: 2023-12-03 14:49:27.880000             🧑  作者: Mango

从给定的字符串中提取所有整数

在处理字符串时,有时会需要从字符串中提取出其中的整数。下面介绍几种方法供程序员们参考。

方法一:使用正则表达式

正则表达式是处理字符串的强大工具,可以用来匹配并提取出符合条件的文本。

import re

string = "Hello, 123 World! 456 Python 789."
pattern = r"\d+"  # 匹配数字
result = re.findall(pattern, string)  # 提取所有整数

print(result)  # ['123', '456', '789']

在上述代码中,使用了re模块的findall方法来找到所有匹配正则表达式pattern的字符串。

方法二:使用isdigit()方法

isdigit()方法可以判断字符串中是否只包含数字字符,因此可以将字符串中的每个字母遍历一遍,将所有的数字字符转化为整数。

string = "Hello, 123 World! 456 Python 789."
num = ""
result = []

for char in string:
    if char.isdigit():
        num += char
    elif num:
        result.append(int(num))
        num = ""

if num:
    result.append(int(num))

print(result)  # [123, 456, 789]

在上述代码中,遍历字符串中的每个字符,判断是否为数字字符,如果是则拼接到num变量中,如果不是则将num转化为整数追加到result列表中。

方法三:使用split()方法

split()方法可以根据指定的分隔符将字符串分割成子字符串,当分隔符为非数字字符时,分割出的子字符串必定不包含整数,可以通过异常处理来过滤掉非整数子字符串。

string = "Hello, 123 World! 456 Python 789."
result = []

for item in string.split():
    try:
        num = int(item)
        result.append(num)
    except ValueError:
        pass

print(result)  # [123, 456, 789]

在上述代码中,使用split()方法分割字符串,并尝试将分割出来的每个子字符串转化为整数,如果无法转化则跳过该子字符串。

以上三种方法均可以提取出给定字符串中的所有整数,程序员根据实际情况选择即可。