vocales una tiene separar saber programa por para palabras frase cuantas contar como caracteres caracter cadenas arreglo python string python-3.x count

una - python separar string por caracter



¿Cómo contar la cantidad de caracteres al comienzo de una cadena? (7)

¿Cómo puedo contar la cantidad de caracteres al comienzo / final de una cadena en Python?

Por ejemplo, si la cadena es

''ffffhuffh''

¿Cómo contaría el número de f s al comienzo de la cadena? La cadena de arriba con a f debe dar salida a 4.

str.count no es útil para mí, ya que un personaje podría estar en el medio de la cadena.


Pruebe esto, usando itertools.takewhile () :

import itertools as it s = ''ffffhuffh'' sum(1 for _ in it.takewhile(lambda c: c == ''f'', s)) => 4

Del mismo modo, para contar los personajes al final:

s = ''huffhffff'' sum(1 for _ in it.takewhile(lambda c: c == ''f'', reversed(s))) => 4


Puede crear una función e iterar a través de su cadena y devolver el conteo del carácter deseado en el principio o el final de la cadena de entrada como en este ejemplo:

# start = True: Count the chars in the beginning of the string # start = False: Count the chars in the end of the string def count_char(string= '''', char='''', start=True): count = 0 if not start: string = string[::-1] for k in string: if k is char: count += 1 else: break return count a = ''ffffhuffh'' print(count_char(a, ''f'')) b = a[::-1] print(count_char(b, ''f'', start=False))

Salida:

4 4


Puede usar la expresión regular con re.match para encontrar la aparición de cualquier carácter al comienzo de la cadena como:

>>> import re >>> my_str = ''ffffhuffh'' >>> my_char = ''f'' >>> len(re.match(''{}*''.format(my_char), my_str).group()) 4


Sobre la base de la respuesta de Oscar López, quiero manejar el caso que mencionas del final de la cadena: use reversed()

import itertools as it my_string = ''ffffhuffh'' len(list(it.takewhile(lambda c: c == my_string[-1], reversed(my_string)))) => 1


También puede usar itertools.groupby para encontrar el conteo de la aparición del primer elemento al comienzo de la cadena como:

from itertools import groupby def get_first_char_count(my_str): return len([list(j) for _, j in groupby(my_str)][0])

Muestra de ejecución:

>>> get_first_char_count(''ffffhuffh'') 4 >>> get_first_char_count(''aywsnsb'') 1


Una manera corta y simple será usar el método str.lstrip y contar la diferencia de longitud.

s = ''ffffhuffh'' print(len(s)-len(s.lstrip(''f''))) # output: 4

str.lstrip([chars]) :

Devuelve una copia de la cadena con los caracteres iniciales eliminados. El argumento de caracteres es una cadena que especifica el conjunto de caracteres que se eliminarán.


seleccione la primera letra con la repetición ((^ (/ w) / 2 *)), frecuencia de conteo len.

len(re.sub(r''((^/w)/2*).*'',r''/1'',my_string))