如何在python2.7中将unicode值字符串转换为unicode

2024-09-24 22:24:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python2.7。 我想把unicode值字符串转换成unicode。在

print u'abc' == unicode('abc')  #True  
print u'\u0026abc' == unicode('\u0026abc')  #False

我要做的是使'\u0026abc'成为一个变量并转换为u'\u0026abc'。
但是您可以看到unicode('\u0026abc')不等于u'\u0026abc'。
有什么方法可以让变量像'\u0026abc'变成u'\u0026abc'?在


Tags: 方法字符串falsetrueunicodeabcprintu0026abc
2条回答

在字节字符串中,'\uxxx'不是特殊的转义序列,它只是一个后跟'u'的反斜杠。如果您确实有一个带序列的字节字符串,请使用正则表达式将它们转换为unicode:

import re
text = '\\u0026abc'
text = re.sub('\\\\u(....)', lambda x:unichr(int(x.group(1),16)), text)

如果您尝试打印unicode("\u0026abc"),您将看到问题的根源:

>>> a = u"abc"
>>> ua = unicode("abc")
>>> a == ua
True
>>> b = u"\u0026abc"
>>> b
u'&abc'
>>> ub = unicode("\u0026abc")
>>> ub
u'\\u0026abc'

你可以这样解决:

^{2}$

但这需要一个人来修改密码。要以编程方式执行此操作,您可以尝试执行以下操作:

>>> c = "\u0026abc"
>>> c
'\\u0026abc'
>>> cc = "u\'" + c + "\'"
>>> cc
"u'\\u0026abc'"
>>> eval cc
>>> eval(cc)
u'&abc'

然而,这个解决方案并不是很普遍,丹尼尔的答案提供了更好的一个。在

相关问题 更多 >