Python 2.7 将 %(百分比)替换为 \(斜杠)但得到 \\(双斜杠)
Python 2.7 Replace % (Percentage) to \ (Slash) but got \\ (Double Slash)
我想要这个结果:
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'
用于表示 Unicode 字符的反斜杠实际上不是字符串的一部分,不能使用 str.replace
进行操作。但是,可以使用 "unicode_escape" 编码将带有 "real" 反斜杠的字符串转换为转义字符串:
>>> s = "%ue8fc%u0082"
>>> s.replace("%", "\").decode("unicode_escape")
u'\ue8fc\x82'
这是正确的。 \
代表一个反斜杠。这是字符串的 unicode-escape
d 版本。
使用此代码转换为标准字符串:
>>> import codecs
>>> codec.decode("\ue8fc\u0082", "unicode-escape")
'\ue8fc\x82'
我想要这个结果:
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'
用于表示 Unicode 字符的反斜杠实际上不是字符串的一部分,不能使用 str.replace
进行操作。但是,可以使用 "unicode_escape" 编码将带有 "real" 反斜杠的字符串转换为转义字符串:
>>> s = "%ue8fc%u0082"
>>> s.replace("%", "\").decode("unicode_escape")
u'\ue8fc\x82'
这是正确的。 \
代表一个反斜杠。这是字符串的 unicode-escape
d 版本。
使用此代码转换为标准字符串:
>>> import codecs
>>> codec.decode("\ue8fc\u0082", "unicode-escape")
'\ue8fc\x82'