Python: Количество вхождений в строке (4 способа!)

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

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


Простое решение: использование метода строки .count()

>>> a_string = 'the quick brown fox jumps over the lazy dog'
>>> print(a_string.count('o'))
4

Оглавление:


Подсчёт количества вхождений с помощью .count()

Один из встроенных способов подсчёта количества вхождений в строке — использование метода строки .count(). Этот метод принимает один аргумент (символ или подстроку) и возвращает количество раз, которое этот символ или подстрока встречаются в строке.

Рассмотрим пример:

>>> a_string = 'the quick brown fox jumps over the lazy dog'
>>> print('o встречается столько раз: ', a_string.count('o'))
>>> print('the встречается столько раз: ', a_string.count('the'))

o встречается столько раз:  4
the встречается столько раз:  2

В приведённом выше примере метод .count() был использован для подсчёта как одиночного символа, так и подстроки.


Использование Counter для подсчёта вхождений в строке

Для более гибкого и эффективного способа подсчёта вхождений символов в строке можно использовать объект Counter из встроенного модуля collections. Этот модуль предоставляет множество полезных классов для работы с коллекциями различных элементов.

Пример:

from collections import Counter

a_string = 'the quick brown fox jumps over the lazy dog'
collection = Counter(a_string)

print(collection)

# Результат: Counter({' ': 8, 'o': 4, 'e': 3, 't': 2, 'h': 2, 'u': 2, ...})

Что произошло в коде:

  1. Импортирован класс Counter из модуля collections.

  2. Строка была передана в объект Counter, который подсчитал количество каждого символа.

  3. Результат представлен в виде словаря, где ключи — символы, а значения — их количество.

Чтобы получить количество определённого символа, используем доступ по ключу:

>>> print(collection['a'])
>>> print(collection['e'])

1
3

Подсчёт вхождений с помощью регулярных выражений (Regex)

Ещё один способ подсчёта вхождений — использование регулярных выражений. Хотя это решение может быть избыточным, если вы знакомы с регулярными выражениями, его несложно реализовать.

Используем метод .findall() модуля re, чтобы найти все вхождения символа или подстроки, а затем применим функцию len():

>>> import re

>>> a_string = 'the quick brown fox jumps over the lazy dog'
>>> print(len(re.findall('o', a_string)))

4

Хотя этот подход работает, он несколько сложнее в сравнении с использованием методов .count() и Counter.


Использование цикла for для подсчёта вхождений в строке

Цикл for — это наивное, но иногда полезное решение для подсчёта вхождений в строке. Основная идея заключается в том, что строки — это итерируемые объекты, которые можно поочерёдно перебирать.

Пример:

a_string = 'the quick brown fox jumps over the lazy dog'

count_o = 0

for character in a_string:
    if character == 'o':
        count_o += 1
    else:
        pass

print(count_o)

# Результат: 4

Что сделано:

  1. Инициализирована переменная count_o со значением 0.

  2. Выполнен цикл по каждому символу строки.

  3. Если символ совпадает с искомым (‘o’), увеличиваем значение переменной.

Этот способ работает, но он менее эффективен и более громоздок для длинных строк.


Заключение

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

  • Использование встроенного метода строки .count()

  • Применение класса Counter из модуля collections

  • Использование регулярных выражений

  • Использование цикла for

Если вы хотите узнать больше о классе Counter, ознакомьтесь с официальной документацией здесь.

Last updated