Mardi 11 août 2009
2
11
/08
/Août
/2009
15:02
Quand on utilise l'opérateur modulo '%' pour formatter une chaîne en python, il faut penser à ceci :
>>> o = None
>>> print "%s" % o
None
>>> o = (1,2)
>>> print "%s" % o
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting
Il a utilisé (1,2) comme une liste d'arguments pour le formattage et non pas comme un objet en soit. Il faut donc faire
>>> print "%s" % (o,)
(1,2)
Et surtout pas
>>> print "%s" % (o)
qui donnera la même erreur que ci-dessus puisqu'il va de lui-même considérer les parenthèses comme inutiles et les enlever.
>>> o = None
>>> print "%s" % o
None
>>> o = (1,2)
>>> print "%s" % o
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting
Il a utilisé (1,2) comme une liste d'arguments pour le formattage et non pas comme un objet en soit. Il faut donc faire
>>> print "%s" % (o,)
(1,2)
Et surtout pas
>>> print "%s" % (o)
qui donnera la même erreur que ci-dessus puisqu'il va de lui-même considérer les parenthèses comme inutiles et les enlever.

