5 методов извлечения и суммирования чисел из строки в Python

Во многих сценариях программирования часто встречаются строки, содержащие числа. Извлечение этих чисел и выполнение над ними математических операций, например сложение, может оказаться полезной задачей. В этой статье мы рассмотрим пять различных методов извлечения чисел из строки и последующего вычисления их суммы с помощью Python.

Метод 1: использование регулярных выражений
Первый метод предполагает использование регулярных выражений для поиска и извлечения чисел из строки. Модуль reв Python предоставляет мощные инструменты для сопоставления с образцом. Вот пример фрагмента кода для извлечения и суммирования чисел из строки с помощью регулярных выражений:

import re
def sum_numbers_regex(string):
    numbers = re.findall(r'\d+', string)
    return sum(map(int, numbers))
string = "I have 5 apples and 10 oranges"
result = sum_numbers_regex(string)
print("Sum of numbers:", result)

Метод 2: использование распознавания списка
Второй метод использует понимание списка для перебора символов в строке, идентификации цифр и накопления их для суммирования. Вот пример:

def sum_numbers_list_comprehension(string):
    numbers = [int(char) for char in string if char.isdigit()]
    return sum(numbers)
string = "The total is 1234"
result = sum_numbers_list_comprehension(string)
print("Sum of numbers:", result)

Метод 3: разделение и преобразование
В этом методе мы разбиваем строку на отдельные слова и преобразуем каждое слово в число, если оно числовое. Затем суммируем полученные числа. Вот код:

def sum_numbers_split_convert(string):
    words = string.split()
    numbers = [int(word) for word in words if word.isdigit()]
    return sum(numbers)
string = "The sum is 25, 30, and 45"
result = sum_numbers_split_convert(string)
print("Sum of numbers:", result)

Метод 4: использование метода isnumeric()
Для строк, содержащих только числовые символы, метод isnumeric()можно использовать для идентификации и суммирования чисел. Вот пример:

def sum_numbers_isnumeric(string):
    numbers = [int(char) for char in string if char.isnumeric()]
    return sum(numbers)
string = "The result is 9876543210"
result = sum_numbers_isnumeric(string)
print("Sum of numbers:", result)

Метод 5: Использование метода re.split()
Метод re.split()позволяет нам разделить строку на основе шаблона регулярного выражения. Мы можем разбить строку на подстроки, содержащие только цифры, а затем суммировать их. Вот код:

def sum_numbers_resplit(string):
    numbers = re.split(r'\D', string)
    numbers = [int(num) for num in numbers if num.isdigit()]
    return sum(numbers)
string = "The values are 1, 2, and 3"
result = sum_numbers_resplit(string)
print("Sum of numbers:", result)

В этой статье мы рассмотрели пять различных методов извлечения чисел из строки и вычисления их суммы с помощью Python. Мы рассмотрели такие методы, как регулярные выражения, понимание списков, разделение и преобразование, а также использование определенных строковых методов. Применяя эти методы, вы можете легко извлекать и вычислять сумму чисел из строк в различных сценариях программирования.