Ich habe eine Zeichenfolge dieser Form
s='arbit'
string='%s hello world %s hello world %s' %(s,s,s)
Alle% s in der Zeichenfolge haben den gleichen Wert (dh s). Gibt es eine bessere Art, dies zu schreiben? (Anstatt s dreimal aufzulisten)
%
Zeichenfolgenoperator wird in Python 3.1 "veraltet und später entfernt" docs.python.org/release/3.0.1/whatsnew/…. Jetzt frage ich mich, was sowohl für die Versionskompatibilität als auch für die Sicherheit der am besten empfohlene Weg ist.
str.format()
. Beispiel: query = "SELECT * FROM {named_arg}"; query.format(**kwargs)
Wo query
ist die Formatzeichenfolge und kwargs
ist ein Wörterbuch mit Schlüsseln, die mit den named_arg
s in der Formatzeichenfolge übereinstimmen .
{0}
, {1}
, {2}
und so weiter , entsprechen Tupels Indizes 0
, 1
und 2
, respectively. Alternativ ist es auch möglich, die Argumente (wie {named_arg}
) zu benennen und jedes in der Formatmethode festzulegen, wie folgt:'Hi {fname} {lname}!'.format(fname='John', lname='Doe')