99 votes

Recherche d'occurrences multiples d'une chaîne dans une chaîne en Python

Comment puis-je trouver plusieurs occurrences d'une chaîne dans une chaîne en Python ? Considérez ceci :

>>> text = "Allowed Hello Hollow"
>>> text.find("ll")
1
>>> 

Donc la première occurrence de ll est à 1 comme prévu. Comment puis-je trouver la prochaine occurrence ?

La même question est valable pour une liste. Considérez :

>>> x = ['ll', 'ok', 'll']

Comment puis-je trouver tous les ll avec leurs index ?

40voto

inspectorG4dget Points 25092

Je pense que ce que vous cherchez est string.count

"Allowed Hello Hollow".count('ll')
>>> 3

J'espère que cela aidera à
NOTER : cela ne capture que les événements qui ne se chevauchent pas

31voto

bstpierre Points 12616

Pour l'exemple de liste, utilisez une compréhension :

>>> l = ['ll', 'xx', 'll']
>>> print [n for (n, e) in enumerate(l) if e == 'll']
[0, 2]

De même pour les chaînes :

>>> text = "Allowed Hello Hollow"
>>> print [n for n in xrange(len(text)) if text.find('ll', n) == n]
[1, 10, 16]

cela listera les passages adjacents de "ll", qui peuvent être ou non ce que vous voulez :

>>> text = 'Alllowed Hello Holllow'
>>> print [n for n in xrange(len(text)) if text.find('ll', n) == n]
[1, 2, 11, 17, 18]

3voto

Yaztromo Points 432

Pour votre exemple de liste :

In [1]: x = ['ll','ok','ll']

In [2]: for idx, value in enumerate(x):
   ...:     if value == 'll':
   ...:         print idx, value       
0 ll
2 ll

Si vous voulez tous les éléments d'une liste qui contient 'll', vous pouvez également le faire.

In [3]: x = ['Allowed','Hello','World','Hollow']

In [4]: for idx, value in enumerate(x):
   ...:     if 'll' in value:
   ...:         print idx, value
   ...:         
   ...:         
0 Allowed
1 Hello
3 Hollow

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