繁体   English   中英

u'string'和unicode(字符串)之间的区别

[英]Difference between u'string' and unicode(string)

这是我制作的示例程序:

>>> print u'\u1212'
ሒ
>>> print '\u1212'
\u1212
>>> print unicode('\u1212')
\u1212

当我print unicode('\ሒ')时,为什么我会得到\ሒ而不是

我正在制作一个程序来存储数据而不是打印它,所以我如何存储而不是\ሒ 现在显然我做不了类似的事情:

x = u''+unicode('\u1212')

有趣的是,即使我这样做,这是我得到的:

\u1212

我认为值得一提的另一个事实是:

>>> u'\u1212' == unicode('\u1212')
False

我该怎么做才能存储或其他类似的字符而不是\\uxxxx

'\ሒ'是一个ASCII字符串,6个字符: \\u121 ,和2

unicode('\ሒ')是Unicode字符串与6个字符: \\u121 ,和2

u'\ሒ'是一个带有一个字符的Unicode字符串:

你应该使用Unicode字符串,如果这是你想要的。

u'\u1212'

如果由于某种原因你需要将'\ሒ'转换为u'\ሒ' ,请使用

'\u1212'.decode('unicode-escape')

(请注意,在Python 3中,字符串始终是Unicode。)

这只是一个误解。

这是一个unicode字符串: x = u'\ሒ'

当您调用print x ,它将打印其字符( ),如图所示。 如果你只需要调用X,它会显示在repr的这esntation:

u'\u1212'

一切都与世隔绝。

这是一个ascii字符串: y = "\ሒ"

当您调用print y ,它将打印其值( \ሒ ),如图所示。 如果你只需要调用X,它会显示在repr的这esntation:

'\\udfgdfg'

请注意指示斜杠正在转义的双斜杠( \\\\ )。

那么,让我们看看下面的函数调用: print unicode('\ሒ')

这是一个函数调用,我们可以用变量替换字符串,所以我们将使用等效函数:

y = "\u1212"
print unicode(x)

但正如上面的第二个例子中, y是一个ascii字符串,内部管理为'\\ udfgdfg',它根本不是unicode字符串。 所以'\\\\udfgdfg'的unicode表示完全相同。 这就是为什么它表现不正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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