繁体   English   中英

如何在python 2.7中将unicode值字符串转换为unicode

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM