要遵循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. php utf8_encode - 字符获得前缀\ u
- 4. 蟒蛇:字符串
- 5. 在蟒蛇带U工作
- 6. 蟒蛇从字符串
- 7. 导入字符串 - 蟒蛇
- 8. 蟒蛇:清理字符串
- 9. 蟒蛇:从JavaScript字符串
- 10. 蟒蛇,格式字符串
- 11. 蟒蛇改变字符串
- 12. 字符串到蟒蛇wstring
- 13. 字符串连接“\”蟒蛇
- 14. 蟒蛇:从字符串
- 15. 蟒蛇如何取这些字符串
- 16. 蟒蛇:分割字符串的字符
- 17. 蟒蛇 - 多格式字符串%字典
- 18. 蟒蛇新行(字节字符串)
- 19. ElementTree的蟒蛇Namesapce前缀
- 20. u和r前缀如何在python中使用字符串?
- 21. 什么是Python字符串中的u前缀?
- 22. 预警蟒蛇与MySQLdb的
- 23. 串联字符串和整数蟒蛇
- 24. 字符串的前缀
- 25. Angular2:获取不带参数的字符串作为字符串
- 26. 蟒蛇 - RE关键字后提取的字符串到列表
- 27. 查找字符串中的字符串列表中的蟒蛇
- 28. 匹配字符串对字符串蟒蛇
- 29. 蟒蛇:字符串数组来格式化字符串
- 30. 蟒蛇 - 类型错误:预期字符串或SQL查询
'from __future__ import unicode_literals' – kennytm 2010-09-09 09:14:01
这将是最好的解决方案。不幸的是我们被困在python 2.5上。 – 2010-09-09 10:24:21