我使用python 2.7。 我想将unicode值字符串转换为unicode。
print u'abc' == unicode('abc') #True
print u'\u0026abc' == unicode('\u0026abc') #False
我想要做的是将'\ u0026abc'变成一个变量并转换为你'u uc26'。
但你可以看到unicode('\ u0026abc')不等于你'\ u0026abc'。
有没有什么方法可以用来像'\ u0026abc'这样的变量?
答案 0 :(得分:4)
在字节字符串中' \ uxxxx'没有特别的逃脱序列,它只是一个反斜杠,然后是' u'。如果你真的有一个带有\ u sequnces的字节字符串,请使用正则表达式将它们转换为unicode:
import re
text = '\\u0026abc'
text = re.sub('\\\\u(....)', lambda x:unichr(int(x.group(1),16)), text)
答案 1 :(得分:2)
如果您尝试打印unicode("\u0026abc")
,您将看到问题的根源:
>>> a = u"abc"
>>> ua = unicode("abc")
>>> a == ua
True
>>> b = u"\u0026abc"
>>> b
u'&abc'
>>> ub = unicode("\u0026abc")
>>> ub
u'\\u0026abc'
您可以这样修复:
>>> ub = unicode("&abc")
>>> ub
u'&abc'
>>> b == ub
True
但这需要人来改变代码。要以编程方式执行此操作,您可以尝试执行以下操作:
>>> c = "\u0026abc"
>>> c
'\\u0026abc'
>>> cc = "u\'" + c + "\'"
>>> cc
"u'\\u0026abc'"
>>> eval cc
>>> eval(cc)
u'&abc'
然而,这个解决方案并不是很普遍,Daniel的回答提供了更好的解决方案。