获取预警不带前缀蟒蛇字符串文字“U”
要遵循best practices for Unicode in python,你应该前缀字符的所有字符串文字与“U”。是否有任何工具可用(最好是PyDev兼容),如果你忘记它会发出警告?获取预警不带前缀蟒蛇字符串文字“U”
你应该前缀的所有字符串文字与 '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
。
'from __future__ import unicode_literals' – kennytm 2010-09-09 09:14:01
这将是最好的解决方案。不幸的是我们被困在python 2.5上。 – 2010-09-09 10:24:21