- Как посчитать количество вхождений символа в строку
- Считаем количество вхождений символа в строку с помощью метода .count()
- Считаем количество вхождений символа в строку с помощью счетчика
- Как посчитать количество вхождений символа в строку при помощи RegEx
- Использование цикла for для подсчета вхождений в строку
- Заключение
- Python. Считаем количество вхождений символа в строку
- Метод №1. Наивный
- Метод №2. Используем count()
- Метод №3: Используем collection.Counter ()
- Способ №4: Используем lambda, sum() и map()
- Способ №5: Используем re + findall()
- Подсчет вхождений символа в строке в Python
- Используйте функцию count() для подсчета количества символов, встречающихся в строке в Python
- Используйте collections.Counter для подсчета вхождений символа в строку в Python
- Использование регулярных выражений для подсчета вхождений символа в строку в Python
- Используйте defaultdict для подсчета вхождений символа в строку в Python
- Используйте pandas.value_counts() для подсчета вхождений символа в строку в Python
- Используйте lambda выражение для подсчета вхождений символа в строку в Python
- Используйте цикл for для подсчета вхождений символа в строку в Python
- Сопутствующая статья — Python String
Как посчитать количество вхождений символа в строку
В этой статье мы разберем, как при помощи Python определить количество вхождений символа или подстроки в строке. Вы узнаете о четырех различных способах достижения этой цели, включая использование встроенного строкового метода .count() и фантастического модуля counter .
Умение посчитать количество вхождений подстроки в строке – невероятно полезный навык, позволяющий находить, скажем, дубликаты значений в строке или удалять ненужные символы (например, специальные).
Считаем количество вхождений символа в строку с помощью метода .count()
Один из способов посчитать количество вхождений подстроки в строку – использовать встроенный строковый метод .count() . Метод принимает один аргумент – символ или подстроку – и возвращает количество повторений этого символа в строке, для которой он вызван.
Этот метод очень прост в реализации. В приведенном ниже примере мы загрузим образец строки, а затем подсчитаем, сколько раз встречается как просто символ, так и подстрока:
a_string = 'the quick brown fox jumps over the lazy dog' print('o appears this many times: ', a_string.count('o')) print('the appears this many times: ', a_string.count('the')) # Результат: # o appears this many times: 4 # the appears this many times: 2
В этом примере мы использовали встроенный метод .count() , чтобы посчитать, сколько раз в строке встречается символ “o” и подстрока “the”.
Примечание редакции: вас также может заинтересовать статья “Как удалить все повторения символа в списке или строке в Python”.
Считаем количество вхождений символа в строку с помощью счетчика
Использование объекта Counter из встроенного модуля collections – более гибкий и эффективный способ подсчета вхождений символа в строку. Модуль предоставляет ряд полезных классов для работы с коллекциями различных элементов.
В данном случае наша коллекция будет представлять собой строку: “the quick brown fox jumps over the lazy dog”.
from collections import Counter a_string = 'the quick brown fox jumps over the lazy dog' collection = Counter(a_string) print(collection) # Результат: # Counter()
Алгоритм наших действий здесь следующий:
- Мы импортировали Counter из модуля collections
- Затем мы присвоили нашу строку переменной a_string
- Мы передали строку в объект Counter и назвали его collection
- Наконец, мы распечатали новый объект collection
Вы можете видеть, что возвращается объект Counter . Мы можем подтвердить это, выполнив print(type(collection)) и получив в результате .
Что замечательно в этом классе, так это то, что он содержит элемент, похожий на словарь, который содержит количество вхождений каждого элемента в переданный итерируемый объект.
Это означает, что мы можем получить количество вхождений любого элемента, обратившись к объекту по ключу, как если бы у нас был словарь. Например, можно посмотреть, как часто встречаются буквы “a” и “e”:
from collections import Counter a_string = 'the quick brown fox jumps over the lazy dog' collection = Counter(a_string) print(collection['a']) print(collection['e']) # Результат: # 1 # 3
В этом и заключается волшебство класса Counter : он позволяет легко получить доступ к числу вхождений элементов в итерируемых объектах Python, таких как string.
Как посчитать количество вхождений символа в строку при помощи RegEx
Для подсчета количества вхождений подстроки в строку также можно использовать регулярные выражения (regex). Этот подход немного избыточен, но если вы знакомы с regex, его можно легко реализовать!
Мы будем использовать модуль регулярных выражений, а именно метод .findall() для загрузки индексов, под которыми встречается символ или подстрока. Затем мы воспользуемся встроенной в Python функцией len() , чтобы узнать, как часто встречается символ или подстрока.
Давайте посмотрим, как это работает:
import re a_string = 'the quick brown fox jumps over the lazy dog' print(len(re.findall('o', a_string))) # Результат: # 4
Как видите, подход немного странный, особенно по сравнению с теми, которые мы уже рассмотрели.
Использование цикла 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_o увеличивается на 1. В противном случае ничего не делается.
Это решение работает, но его немного утомительно записывать, и оно не очень быстро для больших строк.
Заключение
Из этой статьи вы узнали, как при помощи Python посчитать количество вхождений в строку символа или подстроки. Мы разобрали четыре разных подхода: с использованием встроенного метода .count() , класса Counter из collections , метода .findall() из модуля re , а также цикла for .
Если вы хотите узнать больше о классе Counter, ознакомьтесь с официальной документацией.
Python. Считаем количество вхождений символа в строку
Итак, дана строка. Задача состоит в том, чтобы посчитать частоту вхождения одного символа в эту строку. Эта конкретная операция со строкой весьма полезна во многих приложениях и используется например как способ для удаления дубликатов или обнаружения нежелательных символов. Рассмотрим 5 методов.
Метод №1. Наивный
Итерируем всю строку для поиска этого конкретного символа, а затем увеличиваем счетчик, когда мы сталкиваемся с этим символом.
# Python3 code to demonstrate # occurrence frequency using # naive method # initializing string test_str = "Pythonist" # using naive method to get count # counting t count = 0 for i in test_str: if i == 't': count = count + 1 # printing result print ("Count of t in Pythonist is : " + str(count))
Count of t in Pythonist is : 2
Метод №2. Используем count()
Использование count() — самый обычный метод в Python, для того чтобы получить вхождения любого элемента в любом контейнере. Его легко написать и запомнить и, следовательно, его использование довольно популярно.
# Python3 code to demonstrate # occurrence frequency using # count() # initializing string test_str = "Pythonist" # using count() to get count # counting t counter = test_str.count('t') # printing result print ("Count of t in Pythonist is : " + str(counter))
Count of e in Pythonist is : 2
Метод №3: Используем collection.Counter ()
Это менее известный метод для получения количества вхождений элемента в любой контейнер в Python. Он также выполняет задачу, аналогичную описанным выше двум методам, просто является функцией другой библиотеки, т.е. collections.
# Python3 code to demonstrate # occurrence frequency using # collections.Counter() from collections import Counter # initializing string test_str = "Pythonist" # using collections.Counter() to get count # counting t count = Counter(test_str) # printing result print ("Count of t in Pythonist is : " + str(count['t']))
Count of t in Pythonist is : 2
Способ №4: Используем lambda, sum() и map()
Лямбда-функции вместе с sum() и map() также могут решить конкретно эту задачу подсчета общего числа вхождений определенного элемента в строку. Этот метод использует sum() для суммирования всех вхождений, полученных с помощью map().
# Python3 code to demonstrate # occurrence frequency using # lambda + sum() + map() # initializing string test_str = "Pythonist" # using lambda + sum() + map() to get count # counting t count = sum(map(lambda x : 1 if 't' in x else 0, test_str)) # printing result print ("Count of t in Pythonist is : " + str(count))
Count of t in Pythonist is : 2
Способ №5: Используем re + findall()
Регулярные выражения могут помочь нам решить множество задач программирования, связанных со строками. Они также могут помочь нам в достижении результата в задаче поиска вхождения элемента в строку.
# Python3 code to demonstrate # occurrence frequency using # re + findall() import re # initializing string test_str = "Pythonist" # using re + findall() to get count # counting t count = len(re.findall("t", test_str)) # printing result print ("Count of t in Pythonist is : " + str(count))
Count of t in Pythonist is : 2
Подсчет вхождений символа в строке в Python
- Используйте функцию count() для подсчета количества символов, встречающихся в строке в Python
- Используйте collections.Counter для подсчета вхождений символа в строку в Python
- Использование регулярных выражений для подсчета вхождений символа в строку в Python
- Используйте defaultdict для подсчета вхождений символа в строку в Python
- Используйте pandas.value_counts() для подсчета вхождений символа в строку в Python
- Используйте lambda выражение для подсчета вхождений символа в строку в Python
- Используйте цикл for для подсчета вхождений символа в строку в Python
В программировании строка — это последовательность символов.
В этом руководстве будет показано, как подсчитать количество вхождений символа в строку в Python.
Используйте функцию count() для подсчета количества символов, встречающихся в строке в Python
Мы можем подсчитать появление значения в строках с помощью функции count() . Он вернет, сколько раз значение появляется в данной строке.
print('Mary had a little lamb'.count('a'))
Помните, что верхний и нижний регистры считаются разными символами. A и a будут рассматриваться как разные символы и иметь разные значения.
Используйте collections.Counter для подсчета вхождений символа в строку в Python
Counter — подкласс словаря, присутствующий в модуле collections . Он хранит элементы как ключи словаря, а их вхождения — как значения словаря. Вместо того, чтобы вызывать ошибку, он возвращает нулевое количество пропущенных элементов.
from collections import Counter my_str = "Mary had a little lamb" counter = Counter(my_str) print(counter['a'])
Это лучший выбор при подсчете большого количества букв, поскольку счетчик вычисляет все значения за один раз. Это намного быстрее, чем функция count() .
Использование регулярных выражений для подсчета вхождений символа в строку в Python
Регулярное выражение — это специальный синтаксис, содержащийся в шаблоне, который помогает находить строки или набор строк, сопоставляя этот шаблон. Импортируем модуль re для работы с регулярными выражениями.
Мы можем использовать функцию findall() для нашей задачи.
import re my_string = "Mary had a little lamb" print(len(re.findall("a", my_string)))
Используйте defaultdict для подсчета вхождений символа в строку в Python
Defaultdict присутствует в модуле collections и является производным от класса словаря. Его функциональность примерно такая же, как у словарей, за исключением того, что он никогда не вызывает KeyError, так как предоставляет значение по умолчанию для ключа, который никогда не существует.
Мы можем использовать его, чтобы получить вхождения символа в строке, как показано ниже.
from collections import defaultdict text = 'Mary had a little lamb' chars = defaultdict(int) for char in text: chars[char] += 1 print(chars['a']) print(chars['t']) print(chars['w']) # element not present in the string, hence print 0
Используйте pandas.value_counts() для подсчета вхождений символа в строку в Python
Мы можем использовать метод pandas.value_counts() , чтобы получить вхождения всех символов, присутствующих в предоставленной строке. Нам нужно передать строку как объект Series .
import pandas as pd phrase = "Mary had a little lamb" print(pd.Series(list(phrase)).value_counts())
4 a 4 l 3 t 2 e 1 b 1 h 1 r 1 y 1 M 1 m 1 i 1 d 1 dtype: int64
Возвращает вхождения всех символов в объекте Series .
Используйте lambda выражение для подсчета вхождений символа в строку в Python
Функции lambda могут не только подсчитывать вхождения из данной строки, но также могут работать, когда у нас есть строка, как список подстрок.
sentence = ['M', 'ar', 'y', 'had', 'a', 'little', 'l', 'am', 'b'] print(sum(map(lambda x : 1 if 'a' in x else 0, sentence)))
Используйте цикл for для подсчета вхождений символа в строку в Python
Мы перебираем строку, и если элемент равен желаемому символу, переменная count увеличивается до тех пор, пока мы не дойдем до конца строки.
sentence = 'Mary had a little lamb' count = 0 for i in sentence: if i == "a": count = count + 1 print(count)
Мы можем увидеть еще один способ использования этого метода с функцией sum() , который можно увидеть ниже.
my_string = "Mary had a little lamb" print(sum(char == 'a' for char in my_string))
Сопутствующая статья — Python String
Copyright © 2023. All right reserved