According to the docs, la stringa incorporato codifica string_escape
:Python "string_escape" vs "unicode_escape"
Produce [s] una stringa che è adatto come stringa di Python codice sorgente
... mentre la unicode_escape
:
Produce [s] una stringa che è adatto come Unicode letterale nel codice sorgente Python
Quindi, dovrebbero avere più o meno lo stesso comportamento. MA, sembrano trattare apici in modo diverso:
>>> print """before '" \0 after""".encode('string-escape')
before \'" \x00 after
>>> print """before '" \0 after""".encode('unicode-escape')
before '" \x00 after
Il string_escape
sfugge l'apice singolo mentre quello Unicode non lo fa. È sicuro assumere che posso semplicemente:
>>> escaped = my_string.encode('unicode-escape').replace("'", "\\'")
... e ottenere il comportamento previsto?
Modifica: Solo per essere super chiari, il comportamento previsto sta diventando qualcosa di adatto come letterale.
Questa è stata la risposta più chiara a qualche errore unicode 'sequenza di escape Unicode non supportata. Funziona anche nel 2016! Grazie! – dotslash