Saltar al contenido

Determinar cuántas veces ocurre una subcadena en una cadena en Python

Solución:

Usar str.count:

>>> nStr="000123000123"
>>> nStr.count('123')
2

Una versión funcional de su código:

nStr="000123000123"
pattern = '123'
count = 0
flag = True
start = 0

while flag:
    a = nStr.find(pattern, start)  # find() returns -1 if the word is not found, 
    #start i the starting index from the search starts(default value is 0)
    if a == -1:          #if pattern not found set flag to False
        flag = False
    else:               # if word is found increase count and set starting index to a+1
        count += 1        
        start = a + 1
print(count)

El problema con count() y otros métodos que se muestran aquí son en el caso de subcadenas superpuestas.

Por ejemplo: "aaaaaa".count("aaa") devuelve 2

Si quieres que vuelva 4 [(aaa)aaa, a(aaa)aa, aa(aaa)a, aaa(aaa)] puede intentar algo como esto:

def count_substrings(string, substring):
    string_size = len(string)
    substring_size = len(substring)
    count = 0
    for i in xrange(0,string_size-substring_size+1):
        if string[i:i+substring_size] == substring:
            count+=1
    return count

count_substrings("aaaaaa", "aaa")
# 4

No estoy seguro de si hay una forma más eficiente de hacerlo, pero espero que esto aclare cómo count() obras.

import re

pattern = '123'

n =re.findall(pattern, string)

Podemos decir que la subcadena ‘patrón’ aparece len (n) veces en ‘cadena’.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *