Est-ce un bug Python 3 sur str.format?
-
26-10-2019 - |
Question
sqlstring = 'INSERT INTO {}'
table = 'Product'
sqlstring.format(table)
ne résulte pas 'INSERT INTO produit' mais 'INSERT INTO {}' pourquoi est-ce donc?
La solution
Python 3.2 travaille correctement:
$ python3.2
Python 3.2.2 (default, Sep 5 2011, 22:09:30)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> sqlstring = 'INSERT INTO {}'
>>> table = 'Product'
>>> sqlstring.format(table)
'INSERT INTO Product'
>>>
Quelle version utilisez-vous?
pensée supplémentaire:
Les chaînes sont immuables et ne pas auto-modify en place. Peut-être que vous voulez:
sqlstring = sqlstring.format(table)
Si les chaînes de format se auto-modifié en place, il serait assez gênant pour les programmeurs Python, chaque chaîne de format ne peut être utilisé qu'une seule fois. Parfois, nous voulons la chance de construire une chaîne de format agréable puis utiliser des centaines de fois -. Ce qui est facile si format()
renvoie le résultat au lieu de modifier le format en place
Autres conseils
format
ne modifie pas la chaîne (il ne peut pas parce que les chaînes sont immuables). Il renvoie une nouvelle chaîne. Vous devez affecter le résultat de l'appel au format:
result = sqlstring.format(table)