Seite 1 von 1
string.Template Frage, zwei Schreibweisen, nur eine Funkt.
Verfasst: Freitag 3. Januar 2014, 18:39
von Sinnentlehrt
Hallo Leute,
Hier mal das Beispiel das läuft:
Code: Alles auswählen
def funktion(bild_name):
bild_link = "<img src=\"%s\" alt=\"bild\" /> \n" %(bild_name)
print(bild_link)
test_bild = "bild.jpg"
funktion(test_bild)
Kommt raus:
Wenn ich es aber so schreibe:
Code: Alles auswählen
def funktion(bild_name):
bild_link = "<img src=\"%(bild_name)s\" alt=\"Bild\" /> \n"
print(bild_link)
test_bild = "bild.jpg"
funktion(test_bild)
Kommt nur das raus, obwohl ich diese Schreibweise natürlich auch einsetze, wenn auch mit weniger BackSlashes.
Wie kann ich den die letzte Schreibweise richtig einsetzen?
Re: string.Template Frage, zwei Schreibweisen, nur eine Funk
Verfasst: Freitag 3. Januar 2014, 18:45
von Sirius3
@Sinnentlehrt: Du formatierst in Deinem zweiten Beispiel den String ja gar nicht:
Code: Alles auswählen
print '<img src="%(bild_name)s" alt="Bild" /> \n' % {'bild_name':'test.jpg'}
wobei Du noch sicherstellen mußt, dass in Deinem Bildnamen Sonderzeichen richtig codiert werden.
Re: string.Template Frage, zwei Schreibweisen, nur eine Funk
Verfasst: Freitag 3. Januar 2014, 18:46
von HarteWare
Wieso nicht mit format?
Re: string.Template Frage, zwei Schreibweisen, nur eine Funk
Verfasst: Freitag 3. Januar 2014, 19:23
von BlackJack
Wieso nicht mit einem Template-System das für HTML gedacht ist.
Edit: Ich vermisse auch irgendwie die im Betreff angekündigte Frage zu `string.Template`‽
Re: string.Template Frage, zwei Schreibweisen, nur eine Funk
Verfasst: Freitag 3. Januar 2014, 20:46
von cofi
+1 fuer die Templating-Engine
Trotzdem: Wenn du einfache Anfuehrungszeichen statt doppelten als Stringbegrenzer nutzt, musst du letztere innerhalb des Strings nicht mehr escapen.
Re: string.Template Frage, zwei Schreibweisen, nur eine Funk
Verfasst: Samstag 4. Januar 2014, 17:28
von Sinnentlehrt
Jetzt habe ich es wieder gefunden. Es geht nämlich so:
Code: Alles auswählen
def funktion(bild_name):
var = "<img src=\"%(bild_name)s\" alt=\"Bild\" /> \n" %locals()
print var
test_bild = "bild.jpg"
funktion(test_bild)
Und dann passt es auch.
Hatte das '%locals()' nicht mehr auf dem Schirm. Und was ich jetzt auch gerade erst begriffen habe.
locals beinhaltet ja interessantes.
Code: Alles auswählen
{'var': '<img src="bild.jpg" alt="Bild" /> \n', 'bild_name': 'bild.jpg'}
@cofi, danke für den Tipp.
@BlackJack, das HTML das ich einsetze ist schon geschrieben. Python braucht es nur noch zu kopieren. Und ich werde mich noch damit befassen, aber Jinja hat im Moment nicht die höchste Priorität.
@sirius3, ja dann meinten wir beide wohl das gleiche, und danke für Erinnerung an das Sonderzeichen Problem, hatte ich schon verdrängt aber baue ich wohl erst am Ende ein.