Supposons que je doive trouver chaque index de la lettre «e» dans le mot «internet»:

letter = 'e'
word = 'internet'
idx = word.index(letter)

Mais ce code ne donne que le premier index. Comment puis-je trouver les autres?

7
markiisi 5 oct. 2011 à 13:05

3 réponses

Meilleure réponse

La réponse de Mark est préférable pour un lettre unique. J'ajoute cela au cas où votre sous-chaîne réelle est plus longue qu'un seul caractère.

Si vous souhaitez utiliser str.index() , il peut prendre une position start facultative et raise un ValueError si la sous-chaîne souhaitée n'est pas trouvée:

>>> letter = 'e'
>>> word = 'internet'
>>> last_index = -1
>>> while True:
...     try:
...         last_index = word.index(letter, last_index + 1)
...         print last_index
...     except ValueError:
...         break
... 
3
6
6
Community 23 mai 2017 à 10:34

Essayez d'utiliser énumération dans un compréhension des listes:

[index for (index, letter) in enumerate(word) if letter == 'e']
13
Mark Byers 5 oct. 2011 à 09:07

Essaye ça:

word = 'internet'
letter = 'e'
[i for i in xrange(len(word)) if word[i] == letter]
0
Nicola Lamacchia 5 oct. 2011 à 09:15