回答
在Python 2.7(也Python 2.6中),你可以做的Unicode文本的模塊默認:
from __future__ import unicode_literals
您必須包括在文件的頂部導入,然後將其應用到所有文件中的字符串文字。使用b
前綴強制字節串:
>>> from __future__ import unicode_literals
>>> "sss"
u'sss'
>>> b"x"
'x'
如果你的意圖是一套標準的字符串轉換爲Unicode的轉換,可以說功能映射到你的列表:
lst = ["aaa", "bbb", "ccc"]
map(unicode, lst)
其中給出
[u"aaa", u"bbb", u"ccc"]
然而,如果lst
包含非ASCII字符串,您必須在u
前加上特定的字符串。如果不這樣做,你會在轉換得到這個錯誤:
lst = ["\xe4"]
map(unicode,lst)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
正如在評論中指出,這個答案就是Python 2.x或3.x的不同在Python 3中,everything changes:
您認爲您瞭解二進制數據和Unicode的一切都已更改。 Python 3.0使用文本和(二進制)數據的概念,而不是Unicode字符串和8位字符串。所有的文本都是Unicode的;然而編碼的Unicode表示爲二進制數據。用於保存文本的類型是str,用於保存數據的類型是字節。與2.x情況最大的區別在於,在Python 3.0中混合文本和數據的任何嘗試都會引發TypeError,而如果您要在Python 2.x中混合使用Unicode和8位字符串,則它會在8位字符串碰巧只包含7位(ASCII)字節,但如果它包含非ASCII值,則會得到UnicodeDecodeError。多年來,這種價值特定的行爲已經造成了無數的悲傷面孔。
我想只使用一些更好的聲明來節省我的打字時間。例如'lst = u [「aaa」,「bbb」,「ccc」]'這會告訴'lst'中的每個字符串都是unicode。 – xralf 2012-02-01 14:38:15
-1不知道unicode編碼,並認爲「ASCII是好的」 - 請閱讀http://www.joelonsoftware.com/articles/Unicode.html – jsbueno 2012-02-01 15:01:27
@jsbueno - 我沒有說過默認的Python 2。 x編碼(ASCII)是「OK」。我簡單地介紹了一種快速和骯髒的方法,用於將OP的只有ASCII編碼的列表轉換爲具有顯式ASCII編碼的unicode表示。這是他想要的嗎?我不完全確定,因爲他沒有指定他想要的編碼,所以我猜測。爲了給這個站點增加價值,如果你覺得需要關於不同編碼的詳細解釋,請在另一個答案中提供它! – Hooked 2012-02-01 15:26:44
- 1. 什麼是<<僞:之前>></ <僞:之前>>對我有用嗎?
- 2. 找我有編碼爲Unicode像<code>u'정정'</code>韓國串需要一個Unicode字符串
- 3. 的iostream使用<<來構造字符串
- 4. 獲得指數<HashMap的<字符串,字符串>>
- 5. Strip <?xml和<!DOCTYPE from字符串
- 6. 如何分組名單<地圖<字符串,對象>>地圖<字符串,列表<地圖<字符串,對象>>在Java8
- 7. 序列化一個List <KeyValuePair <字符串,對象>>
- 8. 什麼意思的符號在java中「<<<」「<< =」「<<」
- 9. 排序列表<keyValuePair <字符串,字符串>>
- 10. 在每個大寫字詞前加上<br>
- 11. JS將字符串中的每個#word替換爲<div>#word</div>
- 12. 轉換一個HashMap <整數,列表<String>>到的HashMap <字符串,HashSet的<Integer>>
- 13. 的Rails搞亂我的代碼以「<<<<<<< HEAD」
- 14. PHP內使用Gettext <<< EOF字符串
- 15. 轉換字符串「><" Into "><a href="tel:number">number</a><」
- 16. 查找前一個<a>元素?
- 17. 爲什麼要編譯「List <String> lst; Object [] o = lst;」如果列表<String>是可變參數?
- 18. 得到一個標籤之間的字符串(在<div><p>p1</p>TEST<p>p2</p></div> TEST)
- 19. 額外<<<<<<< HEAD來自每個空格時從到位桶混帳文件拉
- 20. 將字符串轉換成字符 '<' 來比較字符<
- 21. 的Python:</p> <p><code>"\first phrase\\...\ ... "</code></p> <p>前半句可以是任何長度,包括:進口串
- 22. 解析字符串以特定的格式 - <Username>/<Password> @<Host>
- 23. 「<<<」運算符的名稱是什麼?
- 24. 爲什麼字符串類沒有預定義<<運算符(運算符<<),以便字符串像ostringstream一樣工作?
- 25. 失蹤';'之前'<'
- 26. 沒用使用無效的情況下數字LT(<)的
- 27. <%$,<%@,<%=,<%#...這是怎麼回事?
- 28. 運算符「<<」到一個指針
- 29. <script><!--//--></script>有一個現代的目的?
- 30. <thead>和<th>如果你看一下我所有的在表中的<code><thead></code>標籤<code><th></code>標籤,你可以看到,如果每個人都有自己的類不匹配表
這取決於你使用Python 2或Python 3. – 2012-02-01 14:26:02
我使用'的Python 2.7.2 +',但如果你知道答案兩種可能是對未來有用。 – xralf 2012-02-01 14:39:06
在Python 3.x中,默認情況下所有的字符都是unicode,任何處理文本I/O(文件,數據庫,打印)的通道都需要explcit編碼或默認使用全系統編碼。 – jsbueno 2012-02-01 14:59:48