2017-07-11 4 views
0

Ich versuche, eine einfache Website-Demo zu erstellen, und ich habe Schwierigkeiten, den HTML-Code mit Python zu bearbeiten. Das Folgende ist die Zeichenfolge, die ich zum Speichern des HTML definiert habe (nicht vollständig, weil sie zu lang ist). Ich möchte eine Funktion schreiben, die unter einer bestimmten Bedingung einen Fehler auslöst, aber ich weiß nicht, wie man eine Zeile in die Zeichenkette "page" einfügt.Python: Wie füge ich eine Zeile in eine mehrzeilige Zeichenfolge ein?

page=""" 
<html> 
    <head> 
    <title>Sign up</title> 
    <style type="text/css"> 
     .label {text-align: right} 
     .error {color: red} 
    </style> 

    </head> 

    <body> 
    <h2>Sign up</h2> 
    <form method="post"> 
     <table> 
     <tr> 
      <td class="label"> 
      Username 
      </td> 
      <td> 
      <input type="text" name="username" value=""> 
      </td> 
      <td class="error"> 

      </td> 
     </tr> 

     <tr> 
      <td class="label"> 
      Password 
      </td> 
      <td> 
      <input type="password" name="password" value=""> 
      </td> 
      <td class="error"> 

      </td> 
     </tr> 

Ich mag die Zeile einzufügen „Es ist ein Fehler“ in dem Rohling zwischen diesen beiden Linien:

<td class="error"> 

</td> 

Hinweis gibt es zwei diese Gruppe in der Zeichenkette. Wie kann ich "Es gibt einen Fehler" in der ersten Gruppe mit Python einfügen? Vielen Dank.

+0

haben einen Blick auf Template-Engines; z.B .: http://jinja.pocoo.org/. oder verwenden Sie [Python-String-Formatierung] (https://docs.python.org/3/library/stdtypes.html#str.format). –

Antwort

1

Python verwendet C-Formatstrings.

page="""<html> 
     ...... 
     <td class="error"> 
     %s 
     </td> 
    </tr>""" % "There was an error" 

alternativ können Sie Python string.format als

"fooo {x}".format(x="bar"). 

siehe (https://docs.python.org/2/library/string.html) verwenden;

jinja ist eine ausgezeichnete Vorlage-Engine, wenn Sie die Zeit haben. Genshi (https://genshi.edgewall.org/wiki/GenshiTutorial) lohnt sich ebenfalls.

für Jinja2:

pip install Jinja2 

in Python

from jinja2 import Template 
page = Template("""<html> .... 
<td class="error">{{x}}</td> 
""") 
page.render(x="There was an error") 
+0

Danke für Ihre Antwort. Ich habe die erste Methode ausprobiert und es hat funktioniert. Aber wenn ich 'self.response.out.write (Seite%" Es gab einen Fehler ")' (self wurde von webapp2.RequestHandler geerbt), wird "% s" anstelle der Fehlermeldung ausgedruckt. Warum kann ich das nicht so machen? – Kai

+0

das ist seltsam. Ich müsste mehr sehen, um zu replizieren,% sollte explodieren, wenn es nicht alle Argumente konsumieren kann oder nicht genug bekommt. –

Verwandte Themen