Frage

Ich verwende die WebApp von App Engine. Dieser Anforderungshandler gibt ein Formular mit einem Textfeld aus. Bei der Einreichung wird der Text erhalten und hinzufügen <h1> Tags zu Zeilen, die mit beginnen mit #. ich benutzte repr() um den Text in eine Liste von Zeilen aufteilen zu können, und eval() Analyse des Textes aus jeder Zeile ohne die u' Zu Beginn der Zeichenfolge, die von stammt repr().

class Test(webapp.RequestHandler):
    def get(self):
        self.response.out.write('<form method=\'post\' action=\'\'>')
        self.response.out.write('<textarea name=\'text\'></textarea>')
        self.response.out.write('<input type=\'submit\' value=\'Submit\'/>')
        self.response.out.write('</form>')
    def post(self):
        output = []
        for line in repr(self.request.get('text')).split('\\n'):
            if eval(line)[0] == '#':
                output.append('<h1>'+line+'</h1>')
            else:
                output.append(line)
        self.response.out.write('\\n'.join(output))

Die Art und Weise, wie der Code jetzt ist, gibt mir diesen Fehler:

File "<string>", line 1
    u'#somestring\r
                  ^
SyntaxError: EOL while scanning string literal

Wenn ich nur benutze line[0] Anstatt von eval(line)[0], Alles funktioniert gut, außer dass es für die erste Zeile nicht funktioniert. Auch wenn die erste Zeile mit beginnt mit #, Die bedingte wird für die else Weil die ersten Charaktere sein werden u' und nicht #. Versuch, das mit zu arbeiten eval() Gibt mir diesen Fehler. Wie kann ich dieses Problem umgehen?

War es hilfreich?

Lösung

Um den Text aufzuteilen, haben die Saiten ein eingebautes in splitlines Methode:

for line in self.request.get('text').splitlines():
    ... do whatever ...

Dann um zu sehen, ob eine bestimmte Linie mit a beginnt #, Versuche dies:

if line.strip()[0]=='#':
    ... do whatever ...

Zusammensetzen:

for line in self.request.get('text').splitlines():
    if line.strip()[0] == '#':
        ... do whatever ...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top