Comment puis-je compter le nombre de fois qu'une sous-chaîne donnée est présente dans une chaîne en Python ?
Par example:
>>> 'foo bar foo'.numberOfOccurrences('foo')
2
Comment puis-je compter le nombre de fois qu'une sous-chaîne donnée est présente dans une chaîne en Python ?
Par example:
>>> 'foo bar foo'.numberOfOccurrences('foo')
2
string.count(substring)
, comme dans :
>>> "abcdabcva".count("ab")
2
Comme indiqué dans les commentaires, c'est la façon de procéder pour les occurrences qui ne se chevauchent pas. Si vous devez compter les occurrences qui se chevauchent, vous feriez mieux de vérifier les réponses à l' adresse : " Python regex trouve toutes les correspondances qui se chevauchent ? ", ou vérifiez simplement mon autre réponse ci-dessous.
La meilleure façon de trouver une sous-chaîne qui se chevauche dans une chaîne donnée est d'utiliser l'expression régulière python, elle trouvera toutes les correspondances qui se chevauchent à l'aide de la bibliothèque d'expressions régulières. Voici comment le faire à gauche est la sous-chaîne et à droite, vous fournirez la chaîne pour correspondre
print len(re.findall('(?=aa)','caaaab'))
3
Pour trouver les occurrences qui se chevauchent d'une sous-chaîne dans une chaîne en Python 3, cet algorithme fera :
def count_substring(string,sub_string):
l=len(sub_string)
count=0
for i in range(len(string)-len(sub_string)+1):
if(string[i:i+len(sub_string)] == sub_string ):
count+=1
return count
J'ai moi-même vérifié cet algorithme et cela a fonctionné.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.