要遵循best practices for Unicode in python,你應該前綴字符的所有字符串文字與「U」。是否有任何工具可用(最好是PyDev兼容),如果你忘記它會發出警告?獲取預警不帶前綴蟒蛇字符串文字「U」
回答
您可能希望通過使用parser
或dis
內置模塊解析Python源代碼來編寫一個這樣的warnging-generator工具。您也可以考慮在pylint中添加這樣的功能。
你應該前綴的所有字符串文字與 'U'
沒有,真的沒有。
您應該使用u
前綴字符串的文字。但並不是所有的字符串都是字符串。在與基於字節的組件通信時,如網絡服務或二進制文件,您需要使用字節字符串。
例如。想要嘗試將Unicode字符串寫入PNG文件?不明智。想要base64解碼字符串Y2Fm6Q==
?你不能在這裏合理地使用Unicode字符串,base64是明確的字節。
當然,Python會經常讓你得逞的傳遞unicode字符串,其中一個字節串的預期,但只能通過自動編碼爲ASCII。如果字符串包含非ASCII字符,您將獲得UnicodeError
,就像您使用的字節是unicode所期望的那樣。 「Unicode是正確的,字節是錯誤的」是一個破壞性的神話。這兩種字符串的操作都是必需的。
如果您擔心過渡到Python 3,您當然應該將您的字符串標記爲u''
,但您還應該將顯式字節字符串標記爲b''
。無關緊要的字符串可以保留爲''
,並讓它們在Python 3中從字節字符串轉換爲unicode字符串。有很多情況下,Python 2用於使用字節,而Python 3在適當的地方使用Unicode這個。但是仍然有很多情況下你確實需要說話字節,並且將其轉換爲Python 3作爲unicode會導致問題。
(與此唯一的問題是b''
語法需要Python 2.6或更高版本,所以使用它會令你與早期版本不兼容。)
採取了點,我編輯我的問題。 – 2010-09-09 10:08:36
KennyTM的評論應張貼作爲一個答案:
from __future__ import unicode_literals
這個未來的聲明可以在Python 2.6和2.7中使用,並且支持Python 3的字符串語法,因此前綴不固定的字符串是Unicode字符串,而字節數組需要前綴b
。
- 1. 獲取字符串蟒蛇
- 2. 地帶串字符蟒蛇
- 3. 獲取JSON值不字符串前綴
- 4. php utf8_encode - 字符獲得前綴\ u
- 5. 字符文字與字符串文字的U前綴有什麼區別?
- 6. 蟒蛇:字符串
- 7. 在蟒蛇帶U工作
- 8. C#:如何從字符串XElement獲取名稱(帶前綴)?
- 9. 組重複的字符串與數字後綴蟒蛇
- 10. 導入字符串 - 蟒蛇
- 11. 蟒蛇:清理字符串
- 12. 蟒蛇:從JavaScript字符串
- 13. 蟒蛇搜索字符串
- 14. 切片字符串蟒蛇
- 15. 蟒蛇,字符串方法
- 16. 蟒蛇字符串分割
- 17. 字符串連接「\」蟒蛇
- 18. 字符串到蟒蛇wstring
- 19. 蟒蛇,格式字符串
- 20. 蟒蛇:從字符串
- 21. 蟒蛇從字符串
- 22. 字符串連接蟒蛇
- 23. 字符串整數蟒蛇
- 24. 格式字符串蟒蛇
- 25. 找到字符串蟒蛇
- 26. 蟒蛇改變字符串
- 27. 蟒蛇如何取這些字符串
- 28. 蟒蛇:分割字符串的字符
- 29. 如何獲取帶前綴的數字?
- 30. 蟒蛇新行(字節字符串)
'from __future__ import unicode_literals' – kennytm 2010-09-09 09:14:01
這將是最好的解決方案。不幸的是我們被困在python 2.5上。 – 2010-09-09 10:24:21