2017-04-15 1 views
1

Wenn ich eine Zeichenfolge wie diese in Python, wie kann ich die Platzhalter füllen?Wie Platzhalter in Python-Strings ersetzen

s = """ 
uri1: %s/file1.txt 
md5: %s 
uri2: %s/file2.txt 
md5: %s 
uri3: %s/file3.txt 
md5: %s 
""" 

Die uri wird gleich bleiben, md5 wird sich jedoch ändern. Also für die oben würde die endgültige Ausgabe so etwas wie dieses:

uri1: file:///somepath/foo/file1.txt 
md5: 1234 
uri2: file:///somepath/foo/file2.txt 
md5: 4321 
uri3: file:///somepath/foo/file3.txt 
md5: 9876 

Ich weiß, dass ich jeden %s füllen kann, aber was ist, wenn ich will nicht die gleiche Variable jedes Mal duplizieren? das heißt ich will tun, um dies zu vermeiden:

s = """ 
uri1: %s/file1.txt 
md5: %s 
uri2: %s/file2.txt 
md5: %s 
uri3: %s/file3.txt 
md5: %s 
""" % (self.URI, self.md5_for_1, self.URI, self.md5_for_2, self.URI, self.md5_for_3) 

Im oben, ich habe self.URI jedes Mal angeben ... Ich frage mich, ob es einen Weg, nur um in der Lage ist, um es einmal angeben?

Antwort

1

Check out str.format:

string = """ 
uri1: {s.URI}/file1.txt 
md5: {s.md5_for_1} 
uri2: {s.URI}/file2.txt 
md5: {s.md5_for_2} 
uri3: {s.URI}/file3.txt 
md5: {s.md5_for_3} 
""".format(s=self) 

Hier ist eine Seite zu helfen . https://pyformat.info

0

warum verwenden nicht .format

s = """ 
uri1: {uri}/file1.txt 
md5: {uri} 
uri2: {uri}/file2.txt 
md5: {uri} 
uri3: {uri}/file3.txt 
md5: {uri} 
""".format(uri=self.URI) 
0

Sie Werte mehr als einmal verwendet werden können, zum Beispiel:

"{0} {0} {1}".format("a", "b") 
'a a b' 
Verwandte Themen