Python: beim Formatieren einer Zeichenfolge mit Variablennamen Platzhalter

Betrachten Sie den folgenden string-Gebäude-Anweisung:

s="svn cp %s/%s/%s/%s/" % (root_dir, trunk, root_dir, tag)

Mit vier %s kann verwirrend sein, so dass ich lieber mit variable-Namen:

s="svn cp {root_dir}/{trunk}/{root_dir}/{tag}/".format(**SOME_DICTIONARY)

Wenn root_dir, tag und trunk definiert sind, die innerhalb des Bereichs einer Klasse, mit self.__dict__ gut funktioniert:

s="svn cp {root_dir}/{trunk}/{root_dir}/{tag}/".format(**self.__dict__)

Aber, wenn die Variablen lokal sind, sind Sie nicht der Definition in einem Wörterbuch, so dass ich die Verwendung von string-Verkettung statt:

s="svn cp "+root_dir+"/"+trunk+"/"+root_dir+"/"+tag+"/"

Ich finde diese Methode ziemlich verwirrend, aber ich kenne keinen Weg, um erstellen Sie eine Zeichenfolge mit in-line-lokale Variablen.

Wie kann ich das Konstrukt die Zeichenkette mit Namen der Variablen, wenn die Variablen lokal?

Update: Mit der locals() Funktion hat den trick.

Beachten Sie, dass das mischen von lokalen und Objekt-Variablen ist erlaubt! z.B.,

s="svn cp {self.root_dir}/{trunk}/{self.root_dir}/{tag}/".format(**locals())
InformationsquelleAutor Adam Matan | 2013-07-04
Schreibe einen Kommentar