2013-04-25 114 views
2

我见过Python字典看起来像最近这样:Python字典键/带前缀的值 - 前缀是什么?

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'] 
+5

'u'手段[unicode的](http://docs.python.org/2/howto/unicode.html)。 – 2013-04-25 20:27:22

+1

[Python的Unicode的(http://docs.python.org/2/howto/unicode.html) – 2013-04-25 20:29:06

+0

当你到数据库,它们将您的字符串转换成Unicode,所以,除非你真正来到这里你处理一个点与unicodes你不应该强调这一点。 – Crispy 2013-04-25 20:43:15

回答

7

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

所以,u防止翻译成ASCII文本。除非你做到这一点

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

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

你可以阅读更多内容:DOCS

(其余为Unicode)

例如,这将不会在Python 2工作

一些历史:PEP 3120

+0

谢谢:)有没有覆盖这个文件?你能给我一个代码示例吗?我可以将文本翻译为ASCII – Shengjie 2013-04-25 20:31:28

+0

@ Shengjie你可以使用[ord()](http://docs.python.org/2/library/functions.html#ord)将字符翻译为ascii值。例如,'ord('a')'将返回'97' – 2013-04-25 20:42:16

3

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