> For the complete documentation index, see [llms.txt](https://bemind.gitbook.io/neural/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bemind.gitbook.io/neural/python/python-strings/python-kolichestvo-vkhozhdenii-v-stroke-4-sposoba.md).

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

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

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

***

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

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

***

#### **Оглавление:**

1. [Подсчёт количества вхождений с помощью `.count()`](#podschyot-kolichestva-vkhozhdenii-s-pomoshyu-.count)
2. [Использование `Counter` для подсчёта вхождений в строке](#ispolzovanie-counter-dlya-podschyota-vkhozhdenii-v-stroke)
3. [Подсчёт вхождений с помощью регулярных выражений (Regex)](#podschyot-vkhozhdenii-s-pomoshyu-regulyarnykh-vyrazhenii-regex)
4. [Использование цикла `for` для подсчёта вхождений](#ispolzovanie-cikla-for-dlya-podschyota-vkhozhdenii-v-stroke)
5. [Заключение](#zaklyuchenie)

***

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

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

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

```python
>>> 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`. Этот модуль предоставляет множество полезных классов для работы с коллекциями различных элементов.

Пример:

```python
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. Результат представлен в виде словаря, где ключи — символы, а значения — их количество.

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

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

1
3
```

***

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

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

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

```python
>>> 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` — это наивное, но иногда полезное решение для подсчёта вхождений в строке. Основная идея заключается в том, что строки — это итерируемые объекты, которые можно поочерёдно перебирать.

Пример:

```python
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`, ознакомьтесь с официальной документацией здесь.
