Pregunta Cuenta el número de ocurrencias de un personaje en una cadena


¿Cuál es la forma más simple de contar el número de ocurrencias de un personaje en una cadena?

p.ej. contar el número de veces 'a' aparece en 'Mary had a little lamb'


718
2017-07-20 20:00


origen


Respuestas:


str.count (sub [, inicio [, fin]])

Devuelve el número de apariciones no superpuestas de subcadena sub en el rango [start, end]. Argumentos opcionales start y end se interpretan como en notación de sectores.

>>> sentence = 'Mary had a little lamb'
>>> sentence.count('a')
4

1016
2017-07-20 20:04



Puedes usar contar() :

>>> 'Mary had a little lamb'.count('a')
4

117
2017-07-20 20:04



Como dijeron otras respuestas, usar el método count de cadena () es probablemente el más simple, pero si lo haces con frecuencia, echa un vistazo. colecciones.Contenedor:

from collections import Counter
str = "Mary had a little lamb"
counter = Counter(str)
print counter['a']

79
2017-08-01 22:12



Expresiones regulares tal vez?

import re
my_string = "Mary had a little lamb"
len(re.findall("a", my_string))

44
2017-07-20 20:03



myString.count('a');

más información aquí


23
2017-07-20 20:04



"aabc".count("a")

14
2017-07-20 20:05



Las expresiones regulares son muy útiles si quieres insensibilidad a mayúsculas y minúsculas (y por supuesto todo el poder de expresiones regulares).

my_string = "Mary had a little lamb"
# simplest solution, using count, is case-sensitive
my_string.count("m")   # yields 1
import re
# case-sensitive with regex
len(re.findall("m", my_string))
# three ways to get case insensitivity - all yield 2
len(re.findall("(?i)m", my_string))
len(re.findall("m|M", my_string))
len(re.findall(re.compile("m",re.IGNORECASE), my_string))

Tenga en cuenta que la versión de expresiones regulares toma el orden de diez veces más tiempo para ejecutarse, lo que probablemente sea un problema solo si my_string es tremendamente largo, o si el código está dentro de un bucle profundo.


8
2017-12-05 17:04



a = 'have a nice day'
symbol = 'abcdefghijklmnopqrstuvwxyz'
for key in symbol:
    print key, a.count(key)

5
2017-10-24 22:36