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:

Code: Alles auswählen

<img src="bild.jpg" alt="Bild" />
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.

Code: Alles auswählen

<img src="%(bild_name)s" alt="Bild" /> 
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. :roll:

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.

Code: Alles auswählen

<img src="bild.jpg" alt="Bild" />
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.