Python: Количество вхождений в строке (4 способа!)
В этом посте вы узнаете, как использовать Python для подсчета количества вхождений в строке. Вы изучите четыре различных способа решения этой задачи, включая встроенный метод строки .count()
и модуль Counter
.
Знание того, как это делать, — невероятно полезный навык, который позволяет, например, находить дублирующиеся значения в строке или удалять нежелательные символы (такие как специальные символы).
Простое решение: использование метода строки .count()
.count()
>>> a_string = 'the quick brown fox jumps over the lazy dog'
>>> print(a_string.count('o'))
4
Оглавление:
Подсчёт количества вхождений с помощью .count()
.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
для подсчёта вхождений в строкеДля более гибкого и эффективного способа подсчёта вхождений символов в строке можно использовать объект 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, ...})
Что произошло в коде:
Импортирован класс
Counter
из модуляcollections
.Строка была передана в объект
Counter
, который подсчитал количество каждого символа.Результат представлен в виде словаря, где ключи — символы, а значения — их количество.
Чтобы получить количество определённого символа, используем доступ по ключу:
>>> 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
для подсчёта вхождений в строкеЦикл 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
Что сделано:
Инициализирована переменная
count_o
со значением 0.Выполнен цикл по каждому символу строки.
Если символ совпадает с искомым (‘o’), увеличиваем значение переменной.
Этот способ работает, но он менее эффективен и более громоздок для длинных строк.
Заключение
В этом посте вы узнали, как подсчитывать количество вхождений в строке четырьмя различными способами:
Использование встроенного метода строки
.count()
Применение класса
Counter
из модуляcollections
Использование регулярных выражений
Использование цикла
for
Если вы хотите узнать больше о классе Counter
, ознакомьтесь с официальной документацией здесь.
Last updated