Какой самый простой способ подсчитать количество вхождений символа в строку?
например посчитать количество раз 'a'
появляется в'Mary had a little lamb'
str.count (sub [, start [, end]])
Возвращает количество непересекающихся вхождений подстроки
sub
в диапазоне[start, end]
. Необязательные аргументыstart
иend
интерпретируются как в обозначении слайса.
>>> sentence = 'Mary had a little lamb'
>>> sentence.count('a')
4
Как и в других ответах, использование строкового метода count (), вероятно, является самым простым, но если вы делаете это часто, посмотрите на collection.Counter :
from collections import Counter
my_str = "Mary had a little lamb"
counter = Counter(my_str)
print counter['a']
Регулярные выражения, может быть?
источник
len(re.findall('1',bin(10)))
больше информации здесь
источник
Python-3.x:
источник
str.count(a)
является лучшим решением для подсчета одного символа в строке. Но если вам нужно посчитать больше символов, вам придется читать всю строку столько раз, сколько символов вы хотите посчитать.Лучшим подходом для этой работы будет:
Таким образом, у вас будет диктант, который возвращает количество вхождений каждой буквы в строке и,
0
если ее нет.Для счетчика, нечувствительного к регистру, вы можете переопределить методы мутатора и метода доступа, используя подклассы
defaultdict
(базовый класс только для чтения):источник
Counter
, а это уже классcollections
.Counter
является более раздутым чистым классом Python иdefaultdict
«s__missing__
будет написан на C . Для такой простой задачи, как эта (int
также реализована в C), этот подход немного быстрее.Эта простая и понятная функция может помочь:
источник
str
. Если вы дадите имя переменной, онаstr
больше не является встроенным типом. Также вы считаете четырнадцать б четырнадцать раз. Вы можете избежать этого , просто изменивfor c in text
сfor c in set(text)
.Регулярные выражения очень полезны, если вы хотите не учитывать регистр (и, конечно, всю мощь регулярных выражений).
Имейте в виду, что версия регулярного выражения выполняется в десять раз дольше, что, вероятно, будет проблемой только в том случае, если my_string очень длинная или код находится в глубоком цикле.
источник
источник
источник
Альтернативный способ получить все счетчики символов без использования
Counter()
,count
и регулярное выражениеисточник
count
это определенно самый краткий и эффективный способ подсчета появления символа в строке, но я попытался найти решение, используяlambda
что-то вроде этого:Это приведет к:
Кроме того, есть еще одно преимущество: если предложение представляет собой список подстрок, содержащих те же символы, что и выше, то это также дает правильный результат из-за использования
in
. Посмотри :Это также приводит к:
Но, конечно, это будет работать только при проверке вхождения одного символа, как
'a'
в данном конкретном случае.источник
Метод «Без использования счетчика, чтобы найти нужный символ в строке».
источник
Я фанат библиотеки панд, в частности,
value_counts()
метод. Вы можете использовать его для подсчета появления каждого символа в вашей строке:источник
источник
Есть два способа добиться этого:
1) Со встроенной функцией count ()
2) Без использования функции
источник
Не более, чем это ИМХО - вы можете добавить верхний или нижний методы
источник