2013-04-25 133 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'