Python 2.7 Заменить% (Percentage) на \ (косая черта), но получил \\ (двойная косая черта) - PullRequest
0 голосов
/ 13 октября 2018

Я хочу этот результат:

u'\ue8fc\x82'

Но он всегда дает мне:

u'\\ue8fc\\u0082'

Образец 1:

>>> a='\ue8fc\u0082'

>>> a
'\\ue8fc\\u0082'

>>> print a
\ue8fc\u0082

>>> unicode(a)
u'\\ue8fc\\u0082'

>>> unicode(a).replace('\\\\','\\')
u'\\ue8fc\\u0082'

>>> repr(unicode(a).replace('\\\\','\\'))
"u'\\\\ue8fc\\\\u0082'"

>>> repr(unicode(b).replace('\\','?'))
"u'?ue8fc?u0082'"

>>> repr(unicode(b).replace('\\','?').replace('?','\\'))
"u'\\\\ue8fc\\\\u0082'"

Образец 2:

>>> u'\ue8fc\u0082'
u'\ue8fc\x82'

>>> repr(u'\ue8fc\u0082')
"u'\\ue8fc\\x82'"

Зачем мне это нужно:

Я хочу превратить

'% ue8fc% u0082'

в

'\ ue8fc \ u0082'

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Это правильно.\\ обозначает одну обратную косую черту.Это unicode-escape d версия строки.

Используйте этот код для преобразования в стандартную строку:

>>> import codecs
>>> codec.decode("\\ue8fc\\u0082", "unicode-escape")
'\ue8fc\x82'
0 голосов
/ 13 октября 2018

Обратные слэши, которые используются для представления символов Юникода, не являются буквально частью строки и не могут быть изменены с помощью str.replace.Тем не менее, можно преобразовать строку с «настоящими» обратными слешами в экранированную строку, используя кодировку «unicode_escape»:

>>> s = "%ue8fc%u0082"
>>> s.replace("%", "\\").decode("unicode_escape")
u'\ue8fc\x82'
...