IndexError: list index out of range

Fermé
jrm_2010 - Modifié par jrm_2010 le 6/06/2016 à 07:09
 Utilisateur anonyme - 6 juin 2016 à 16:19
Bonjour,

Je débute en python et je souhaiterais récupérer tous les mots d'un texte. Ensuite je retirerai les doublons de mon tableau.

Mon soucis c'est qu'actuellement j'ai un "IndexError: list index out of range" et je ne comprend pas pourquoi. Voici mon code:

#!/usr/bin/env python
import urllib 
page=urllib.urlopen('https://www.gutenberg.org/files/135/135-0.txt') 
strpage=page.read()
numMot = 0
mot = []
for lettre in strpage:
 if lettre != " ":
  mot[numMot] = mot[numMot] + lettre
 else:
  numMot += 1


Voici l'erreur entière:
File "parser.py", line 9, in <module>
mot[numMot] = mot[numMot] + lettre
IndexError: list index out of range

En gros je parcoure chaque caractères de la page et lorsque je rencontre un "espace" j'incrémente ma variable numMot qui me sert à ranger mes mots dans la liste mot[].

Merci de votre aide

EDIT: J'ai changé de méthode et j'ai préféré utilisé un bibliothèque plutôt qu'une liste. Cependant j'ai toujours une erreur:
File "parser.py", line 9, in <module>
mot[numMot] += lettre
KeyError: 0

Mon code:
#!/usr/bin/env python
import urllib 
page=urllib.urlopen('https://www.gutenberg.org/files/135/135-0.txt') 
strpage=page.read()
numMot = 0
mot = {}
for lettre in strpage:
	if lettre != " ":
		mot[numMot] += lettre
	else:
		numMot += 1
		print numMot
print mot[500]

1 réponse

Bonjour

Je ne fais pas de python, mais le message d'erreur est parlant, il n'existe pas d'enregistrement numéroté numMot, et numMot est en-dehors des index autorisés pour le tableau ou la collection.

Donc soit ta liste est mal initialisée plus probable, soit tu n'as pas créé d'instance.

Par contre, dans plein d'autres langages il existe split.
Et une petite recherche montre qu'en Python aussi.

http://www.tutorialspoint.com/python/string_split.htm

Quand j'étais petit, la mer Morte n'était que malade.
George Burns
0
Merci de ta réponse et de m'avoir fait découvrir la méthode split(), j'étais en train de réinventer la roue...
0
Utilisateur anonyme
6 juin 2016 à 16:19
De rien
0