A simple solution would be ascii():
string = 'Bitte überprüfen Sie, ob die Dokumente erfolgreich in System ' \
'eingereicht wurden, und löschen Sie dann die tatsächlichen Dokumente.'
print(ascii(string))
output :
'Bitte \xfcberpr\xfcfen Sie, ob die Dokumente erfolgreich in System eingereicht wurden, und l\xf6schen Sie dann die tats\xe4chlichen Dokumente.'
Also you can use unicode-escape
and raw-unicode-escape
to achive this (link) :
string = 'Bitte überprüfen Sie, ob die Dokumente erfolgreich in System ' \
'eingereicht wurden, und löschen Sie dann die tatsächlichen Dokumente.'
print(string.encode('unicode-escape').decode('raw-unicode-escape'))
output :
Bitte \xfcberpr\xfcfen Sie, ob die Dokumente erfolgreich in System eingereicht wurden, und l\xf6schen Sie dann die tats\xe4chlichen Dokumente.
Note : ascii()
will escape non-ascii characters with \x
, \u
, \U
for 1 byte, 2 bytes and 4 bytes respectively. In your case you see \x
. But try this one :
print(ascii('س')) # '\u0633'
If you really want to convert \xhh
escape sequences to \u00hh
, use re.sub()
on result of ascii()
:
import re
print(re.sub(r'\\x[a-f0-9]{2}', lambda x: r'\u00' + x.group()[-2:].upper(), ascii(string)))
output :
'Bitte \u00FCberpr\u00FCfen Sie, ob die Dokumente erfolgreich in System eingereicht wurden, und l\u00F6schen Sie dann die tats\u00E4chlichen Dokumente.'
Above approaches works for escaping any non-ascii characters, if you intend to escape just those three Germany's alphabets and there is no other non-ascii characters, take a look at str.translate()
method.