Wie konvertiert man escaped-Zeichen in Python?
Ich möchte konvertieren von strings mit Escape-Zeichen enthält, um Ihre normale form, auf die gleiche Weise-Python-lexikalische parser führt:
>>> escaped_str = 'One \\\'example\\\''
>>> print(escaped_str)
One \'Example\'
>>> normal_str = normalize_str(escaped_str)
>>> print(normal_str)
One 'Example'
Natürlich die langweiligste Art sein wird, zu ersetzen, alle bekannten escaped Zeichen eins nach dem anderen:
http://docs.python.org/reference/lexical_analysis.html#string-literals
Wie würden Sie implementieren normalize_str()
im obigen code?
r'raw strings ?'
- Was ist hier die Frage?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mehrere ähnliche codecs sind verfügbar, wie rot13-hex.
Oben ist Python 2.x, sondern – da sagten Sie (unten in einem Kommentar), dass Sie mit Python 3.x – es ist zwar circumlocutious zum decodieren einer Unicode-string-Objekt, es ist noch möglich. Der codec wurde umbenannt in "unicode_escape" zu:
str
istbytes
undunicode
iststr
. Sie müssen wahrscheinlich zuerst "codieren" in utf8 oder ascii (die bytes) dann entschlüsseln von 'string_escape'string_escape
Sache, ich war nicht bewusst, dass...Ich nehme an, die Frage ist wirklich:
Versuchen
ast.literal_eval
.Zum Vergleich, gehen den anderen Weg:
Ungepaarten backslashes sind nur Artefakte der Repräsentation und nicht tatsächlich intern gespeichert. Sie könnte Fehler verursachen, wenn Sie versuchen, dies manuell zu erledigen.
Wenn Ihr nur Interesse ist, entfernen Sie einen umgekehrten Schrägstrich nicht vorangestellt ein ungerader Betrag von backslashes, die Sie könnten versuchen, eine while-Schleife:
Untersuchen Sie Ihre Variablen danach und du wirst sehen, warum das, was Sie zu tun versuchen, ist nicht sinnvoll.
...Aber auf einer seitlichen Anmerkung ich bin mir fast 100% sicher, dass "die gleiche Weise-Python-lexikalische parser" gibt es keinen parser, so zu sprechen. Ein parser für Grammatiken, die beschreiben, wie Sie fit Worten zusammen.
Denken Sie an lexikalischen Inhalt Prüfung vielleicht, und das ist oft angegeben mit reguläre Ausdrücke. Parser sind ein insgesamt anspruchsvoller und mächtigen Tier, und nicht etwas, was Sie wollen, mess around mit für die Zwecke der linearen string-manipulation.
SingleNegationElimination bereits erwähnt, aber hier ist ein Beispiel:
In Python 3: