Qual é a maneira mais simples de contar o número de ocorrências de um caractere em uma string?
por exemplo, conte o número de vezes que 'a'
aparece'Mary had a little lamb'
str.count (sub [, início [, fim]])
Retorne o número de ocorrências não sobrepostas de substring
sub
no intervalo[start, end]
. Argumentos opcionaisstart
eend
são interpretados como na notação de fatia.
>>> sentence = 'Mary had a little lamb'
>>> sentence.count('a')
4
Expressões regulares, talvez?
fonte
len(re.findall('1',bin(10)))
mais informações aqui
fonte
Python-3.x:
fonte
str.count(a)
é a melhor solução para contar um único caractere em uma string. Mas se você precisar contar mais caracteres, terá que ler a sequência inteira quantas vezes quiser.Uma abordagem melhor para este trabalho seria:
Portanto, você terá um ditado que retorna o número de ocorrências de todas as letras da string e,
0
se não estiver presente.Para um contador que não diferencia maiúsculas de minúsculas, você pode substituir os métodos mutador e acessador subclassificando
defaultdict
(os da classe base são somente leitura):fonte
Counter
, o que já é uma classecollections
.Counter
é uma classe Python puro mais inchado edefaultdict
's__missing__
é escrita em C . Para uma tarefa simples como esta (int
também é implementada em C), essa abordagem é levemente mais rápida.Essa função fácil e direta pode ajudar:
fonte
str
. Se você der seu nome à variável,str
não será mais um tipo interno. Além disso, você está contando catorze vezes c de c 14. Você pode evitar isso simplesmente mudandofor c in text
comfor c in set(text)
.Expressões regulares são muito úteis se você deseja fazer distinção entre maiúsculas e minúsculas (e, claro, todo o poder do regex).
Esteja ciente de que a versão regex demora dez vezes mais tempo para ser executada, o que provavelmente será um problema apenas se my_string for tremendamente longo ou se o código estiver dentro de um loop profundo.
fonte
fonte
fonte
Uma forma alternativa de obter todas as contagens de caracteres sem usar
Counter()
,count
e regexfonte
count
é definitivamente a maneira mais concisa e eficiente de contar a ocorrência de um caractere em uma string, mas tentei encontrar uma solução usandolambda
, algo como isto:Isso resultará em:
Além disso, há mais uma vantagem disso: se a sentença for uma lista de sub-strings contendo os mesmos caracteres que acima, isso também fornecerá o resultado correto devido ao uso de
in
. Dar uma olhada :Isso também resulta em:
Mas é claro que isso funcionará apenas ao verificar a ocorrência de um único caractere, como
'a'
neste caso em particular.fonte
"Sem usar count para encontrar o caractere em string".
fonte
Sou fã da biblioteca de pandas, em particular o
value_counts()
método. Você pode usá-lo para contar a ocorrência de cada caractere na sua string:fonte
fonte
Existem duas maneiras de conseguir isso:
1) Com contagem de funções incorporada ()
2) Sem usar uma função
fonte
Não mais do que este IMHO - você pode adicionar os métodos superior ou inferior
fonte