Ist das ein Python 3 -Fehler auf Str.format?
-
26-10-2019 - |
Frage
sqlstring = 'INSERT INTO {}'
table = 'Product'
sqlstring.format(table)
führt nicht dazu, dass "in Produkt einfügen", sondern immer noch 'in {}' einfügen ". Warum ist das so?
Lösung
Python 3.2 macht dies richtig:
$ 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'
>>>
Welche Version verwenden Sie?
Zusätzlicher Gedanke:
Saiten sind unveränderlich und modifizieren sich nicht an Ort und Stelle. Vielleicht willst du:
sqlstring = sqlstring.format(table)
Wenn sich Format Strings selbst modifiziert, wäre es für Python-Programmierer ziemlich ärgerlich, da jede Formatkette nur einmal verwendet werden kann. Manchmal möchten wir die Möglichkeit, eine schöne Formatkette zu erstellen und sie hunderte Male zu verwenden - was einfach ist, wenn format()
Gibt das Ergebnis zurück, anstatt das Format an Ort zu ändern.
Andere Tipps
format
Ändert die Zeichenfolge nicht (er kann nicht, weil Zeichenfolgen unveränderlich sind). Es gibt eine neue Zeichenfolge zurück. Sie müssen das Ergebnis des Anrufs zum Format zuweisen:
result = sqlstring.format(table)