250 votes

Compter le nombre d'occurrences d'une sous-chaîne dans une chaîne

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

401voto

jsbueno Points 22212

string.count(substring) , comme dans :

 >>> "abcdabcva".count("ab")
2

Mettre à jour:

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.

32voto

s = 'arunununghhjj'
sb = 'nun'
results = 0
sub_len = len(sb)
for i in range(len(s)):
    if s[i:i+sub_len] == sb:
        results += 1
print results

15voto

Deepak Yadav Points 506

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

12voto

Bharath Kumar R Points 123

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.com

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.

Powered by:

X