我想要这个结果:
bc::transform(begin_a, end_a, begin_b, result.begin(), bc::atan2<float>()); // atan(b/a)
bc::system::default_queue().finish();
但是它总是给我:
u'\ue8fc\x82'
示例1:
u'\\ue8fc\\u0082'
示例2:
>>> 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'"
为什么我需要这个:
我想转身
'%ue8fc%u0082'
进入
'\ ue8fc \ u0082'
答案 0 :(得分:2)
用于表示Unicode字符的反斜杠实际上不是字符串的一部分,并且不能使用str.replace
进行操纵。但是,可以使用“ unicode_escape”编码将带有“真实”反斜杠的字符串转换为转义的字符串:
>>> s = "%ue8fc%u0082"
>>> s.replace("%", "\\").decode("unicode_escape")
u'\ue8fc\x82'
答案 1 :(得分:2)
这是正确的。 \\
代表单个反斜杠。这是字符串的unicode-escape
d版本。
使用以下代码转换为标准字符串:
>>> import codecs
>>> codec.decode("\\ue8fc\\u0082", "unicode-escape")
'\ue8fc\x82'