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(). Этот метод принимает один аргумент (символ или подстроку) и возвращает количество раз, которое этот символ или подстрока встречаются в строке.

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

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


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

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

Пример:

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

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

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

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

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


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

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

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

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


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

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

Пример:

Что сделано:

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

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

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

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


Заключение

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

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

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

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

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

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

Последнее обновление