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)