Laut den Unterlagen die eingebaute String-Kodierung string_escape
:
Erzeugt eine Zeichenkette, die als String-Literal in Python-Quellcode geeignet ist
...während die unicode_escape
:
Erzeugt eine Zeichenkette, die als Unicode-Literal in Python-Quellcode geeignet ist
Sie sollten also in etwa das gleiche Verhalten aufweisen. ABER, sie scheinen einfache Anführungszeichen unterschiedlich zu behandeln:
>>> print """before '" \0 after""".encode('string-escape')
before \'" \x00 after
>>> print """before '" \0 after""".encode('unicode-escape')
before '" \x00 after
Les string_escape
das einfache Anführungszeichen umbricht, während dies bei der Unicode-Version nicht der Fall ist. Ist es sicher anzunehmen, dass ich einfach kann:
>>> escaped = my_string.encode('unicode-escape').replace("'", "\\'")
...und erhalten das erwartete Verhalten?
Edita: Nur um ganz klar zu sein, ist das erwartete Verhalten etwas geeignetes als wörtlich zu erhalten.