Считаем количество чисел в строке в Python

Как подсчитать количество чисел в строке в Python: 4 простых способа

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

1. Метод split() и функция str.isdigit()

Один из способов определить количество чисел в строке – использовать метод split() для разделения строки на список слов, а затем применить функцию str.isdigit() для проверки, является ли слово числом.

Пример:

def count_numbers_in_string(s):
    words = s.split()
    count = 0

    for word in words:
        if word.isdigit():
            count += 1

    return count

s = "123 яблоко 45 груша 6789 банан 10"
print(count_numbers_in_string(s))  

#4

2. Регулярные выражения

Регулярные выражения являются мощным инструментом для поиска и работы со строками. В данном случае мы можем использовать модуль re для поиска всех чисел в строке.

Пример:

import re

def count_numbers_in_string(s):
    numbers = re.findall(r'\d+', s)
    return len(numbers)

s = "123 яблоко 45 груша 6789 банан 10"
print(count_numbers_in_string(s))  

#4

3. Использование метода str.split() с регулярными выражениями

Мы можем также использовать комбинацию метода split() и регулярных выражений для разделения строки на список чисел и подсчета их количества.

Пример:

import re

def count_numbers_in_string(s):
    words = re.split(r'\D+', s)
    count = 0

    for word in words:
        if word:
            count += 1

    return count

s = "123 яблоко 45 груша 6789 банан 10"
print(count_numbers_in_string(s))  

#4

4. Использование списковых включений (list comprehensions)

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

Пример:

def count_numbers_in_string(s):
    words = s.split()
    numbers = [word for word in words if word.isdigit()]
    return len(numbers)

s = "123 яблоко 45 груша 6789 банан 10"
print(count_numbers_in_string(s))  

#4

Заключение

Каждый из представленных методов имеет свои преимущества и недостатки. Метод split() и функция str.isdigit() являются простыми и понятными, но могут быть менее гибкими при работе с разными форматами чисел. Регулярные выражения предлагают больше возможностей для поиска и обработки чисел, однако могут быть сложными для понимания и избыточными для простых задач. Списковые включения являются компактными и эффективными, но могут быть менее читаемыми для новичков.

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

Содержание: