Programmation Python/Problèmes connus

Un livre de Wikilivres.
Aller à : navigation, rechercher


Si les opérations avec un caractère non-ASCII ne fonctionne pas[modifier | modifier le wikicode]

Ajouter l'encodage sous le shebang : # coding: utf-8.

'ascii' codec can't encode characters in position[modifier | modifier le wikicode]

Ajouter .encode('utf-8') après la variable entière (après concaténation).

Import error: No module named monModule[modifier | modifier le wikicode]

Il suffit de modifier le PYTHONPATH pour qu'il trouve le module mentionné, par exemple derrière une condition s'assurant que la machine qui exécute le script contient le répertoire du module :

import sys, socket
if socket.gethostname() == "MonUbuntu":
	sys.path.append(u'/usr/local/lib/python2.7/dist-packages/requests')
else:
	import requests

IndexError: list index out of range[modifier | modifier le wikicode]

Ajouter un test sur la taille du tableau avant d'y accéder, ex :

if len(tableau) > 0: print tableau[0]

sre_constants.error: bad character range[modifier | modifier le wikicode]

Arrive quand on inverse les paramètres dans re.compile(paramètre1).search(paramètre2).

sre_constants.error: multiple repeat[modifier | modifier le wikicode]

Dans un regex, il y a des symboles de répétition consécutifs tels que **, +* ou ++.

sre_constants.error: unmatched group[modifier | modifier le wikicode]

Survient quand re.sub() ne trouve pas un groupe de capture. On peut donc le rechercher pour lancer le remplacement si la condition est remplie :

#!/usr/bin/env python
if re.compile(chaine).search(regex):
	re.sub(regex, chaine)

Sinon il y a peut-être une barre verticale non échappée à tort.

TypeError: maMethode() takes no arguments (1 given)[modifier | modifier le wikicode]

Une méthode de classe doit être déclarée avec l'argument "self" à minima.

TypeError: 'module' object is not callable[modifier | modifier le wikicode]

Il suffit d'appeler le module sous la forme : NomFichier.NomFonction.

TypeError: slice indices must be integers or None or have an __index__ method[modifier | modifier le wikicode]

Une chaine est divisée par une variable inappropriée (ex : x dans c[x:y]).

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 12: ordinal not in range(128)[modifier | modifier le wikicode]

Convertir la variable avec .encode(config.console_encoding, 'replace').

UnicodeWarning: Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal[modifier | modifier le wikicode]

L'encodage pose problème.

ValueError: too many values to unpack[modifier | modifier le wikicode]

Un "for" est mal utilisé, par exemple retirer "clé" dans : "for clé, valeur in tableau".

Références[modifier | modifier le wikicode]