![](/img/trans.png)
[英]How can I convert a unicode string into string literals in Python 2.7?
[英]how to convert a unicode value string to unicode in python 2.7
我使用python 2.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'?
在字节字符串'\\ uxxxx'中没有特殊的转义序列,它只是一个反斜杠,后跟'u'。 如果您确实有一个带有\\ u序列的字节字符串,请使用正则表达式将它们转换为unicode:
import re
text = '\\u0026abc'
text = re.sub('\\\\u(....)', lambda x:unichr(int(x.group(1),16)), text)
如果尝试打印unicode("\&abc")
,则会看到问题的根源:
>>> 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的答案提供了更好的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.