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())
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
locals()
FunktionEDIT:
Da python 3.6 Sie können mithilfe string-interpolation:
locals()
.format
Methode zu einem späteren Zeitpunkt, nach der ersten Zeichenfolge ZuordnungHaben Sie versucht
s="svn cp {root_dir}/{trunk}/{root_dir}/{tag}/".format(**locals())
?