para contar la ocurrencia de una cadena en otra cadena en python

Si esta es la primera cadena: ABCD

si esta es la segunda cadena: ABCD is ABCD

Quiero contar la ocurrencia de la primera cadena en la segunda cadena y eso también en python. ¿Cómo puedo hacer eso? Soy nuevo en Python, por lo que tengo algunos problemas. ¿Alguien puede decirme la solución o proporcionar el código para la misma?

preguntado el 01 de julio de 12 a las 09:07

1 Respuestas

Utiliza str.count():

>>> str1 = "ABCD"
>>> str2 = "ABCD is ABCD"
>>> str2.count(str1)
2

Respondido 30 Jul 16, 07:07

Gracias, funcionó. La solución fue tan simple que se me pasó por alto que puedo usar Count :) - POOJA GUPTA

@POOJAGUPTA sí, fue simple. Puede aceptar la solución si funcionó para usted. - Ashwini Chaudhary

Si str1 = "AA" y str2 = "AAAA", entonces la salida es 2 si se usa count(). Pero, no es correcto, ¿verdad? Creo que la salida correcta es 3. Porque la primera subcadena es el índice 1 y el índice 0 juntos. La segunda subcadena es el índice 1 y el índice 2 juntos. La tercera subcadena es el índice 1 y el índice 2. Entonces, la salida correcta es 3, ¿verdad? Por favor, aclare. - Raj

@RajKumarRampelli Nop, 2 es la salida correcta en ese caso, ya que devuelve el número de ocurrencias que no se superponen. Para obtener el recuento superpuesto, puede usar expresiones regulares: len(re.findall('(?=AA)', 'AAAA')) == 3. - Ashwini Chaudhary

La expresión re.findall('(?=AA)', 'AAAA') devuelve la lista [' ', ' ', ' '] y que tiene una longitud de 3. Cuando utilicé regex 'AA' en lugar de '(? =AA)', entonces la salida es ['AA', 'AA']. Mi consulta es ¿por qué la salida no contiene subcadenas 'AA' cuando se usa la expresión regular '(?=AA)'? también, ¿cuál es el uso de '? ='? - Raj

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.