Python字典键/带前缀的值 - 前缀是什么?

时间:2013-04-25 20:26:43

标签: python unicode python-unicode

我最近看到一个Python dict看起来像这样:

test1 = {u'user':u'user1', u'user_name':u'alice'}

这让我感到困惑,键/值对之前的u是什么?它是某种前缀吗?这有什么不同:

test2 = {'user':'user1', 'user_name':'alice'}

我试过玩test1和test2;他们似乎没有什么不同。有人可以解释前缀的用途吗?

>>> test1 = {u'user':u'user1', u'user_name':u'alice'}
>>> test2 = {'user':'user1', 'user_name':'alice'} 
>>> print test1[u'user']
user1
>>> print test1['user']
user1
>>> print test2['user']
user1
>>> print test2[u'user']

2 个答案:

答案 0 :(得分:7)

在Python 2中,您必须强制Unicode字符保留为Unicode。

因此,u阻止文本转换为ASCII。 (保留为unicode)

例如,这在Python 2中不起作用:

'ô SO'.upper() == 'Ô SO''

除非你这样做:

u'ô SO'.upper() == 'Ô SO'

您可以阅读以下内容:DOCS

一些历史记录:PEP 3120

答案 1 :(得分:3)

u'unicode string'将使字符串成为unicode类型,其中没有前缀的字符串是ASCII类型字符串'ASCII string'