Python u和x27之间的差异;字符串';和unicode(字符串)
这是我制作的一个示例程序:Python u和x27之间的差异;字符串';和unicode(字符串),python,unicode,Python,Unicode,这是我制作的一个示例程序: >>> print u'\u1212' ሒ >>> print '\u1212' \u1212 >>> print unicode('\u1212') \u1212 为什么我得到的是\u1212而不是ሒ当我打印unicode('\u1212')时 我正在制作一个程序来存储数据,而不是打印数据,那么如何存储ሒ而不是\u1212?很明显,我不能这样做: x = u''+unicode('\u1212') 有趣的是,
>>> print u'\u1212'
ሒ
>>> print '\u1212'
\u1212
>>> print unicode('\u1212')
\u1212
为什么我得到的是\u1212
而不是ሒ代码>当我打印unicode('\u1212')
时
我正在制作一个程序来存储数据,而不是打印数据,那么如何存储ሒ代码>而不是\u1212
?很明显,我不能这样做:
x = u''+unicode('\u1212')
有趣的是,即使我这样做了,我得到的是:
\u1212
我认为另一个值得一提的事实是:
>>> u'\u1212' == unicode('\u1212')
False
如何存储ሒ
或其他类似的字符,而不是\uxxx
?“\u1212”
是一个包含6个字符的ASCII字符串:
,u
,1
,2
,1
和2
unicode('\u1212')
是一个包含6个字符的unicode字符串:\
,u
,1
,2
,1
和2
u'\u1212'
是一个带有一个字符的Unicode字符串:ሒ代码>
如果你想要的话,你应该在所有地方使用Unicode字符串
u'\u1212'
如果出于某种原因需要将'\u1212'
转换为u'\u1212'
,请使用
'\u1212'.decode('unicode-escape')
(请注意,在Python 3中,字符串总是Unicode。)这只是一个误解
这是一个unicode字符串:x=u'\u1212'
当您调用print x
时,它将打印其字符(ሒ代码>),如图所示。如果您只调用x,它将显示它的repr
e说明:
u'\u1212'
'\\udfgdfg'
天下无难事
这是一个ascii字符串:y=“\u1212”
当您调用print y
时,它将打印其值(\u1212
),如图所示。如果您只调用x,它将显示它的repr
e说明:
u'\u1212'
'\\udfgdfg'
请注意双斜杠(\\
)表示斜杠正在转义
那么,让我们看看下面的函数调用:print unicode('\u1212')
这是一个函数调用,我们可以用变量替换字符串,因此我们将使用等价的:
y = "\u1212"
print unicode(x)
但在上面的第二个示例中,y
是一个ascii字符串,在内部被管理为“\udfgdfg”,它根本不是unicode字符串。因此,'\\udfgdfg'
的unicode表示形式完全相同。因此,为什么它的行为不正确。比方说,我有一个str,'\u1212',那么我如何将其转换为unicode并存储它?我想你没有理解我,我如何将'\u1212'转换为u'\u1212'?执行此操作时得到false:u'\u1212'==unicode('\u1212')