获取没有前缀“u”的python字符串文本的警告

2024-09-21 07:30:07 发布

您现在位置:Python中文网/ 问答频道 /正文

若要在best practices for Unicode in python后面,您应该在所有字符的字符串文本前面加上“u”。有没有可用的工具(最好是PyDev兼容的)在您忘记它时发出警告?在


Tags: 工具字符串in文本警告forunicode字符
3条回答

您可能希望通过使用parserdis内置模块解析Python源代码来编写这样的警告生成器工具。您还可以考虑向pylint添加这样的功能。在

KennyTM的评论应作为答案发布:

from __future__ import unicode_literals

这个future声明可以在python2.6和2.7中使用,并启用python3的字符串语法,以便未固定的字符串文本是Unicode字符串,而字节数组需要一个b前缀。在

you should prefix all string literals with 'u'

不,不是。在

您应该在字符串的文字前面加上u。但并非所有的字符串都是字符串。当您与基于字节的组件(如网络服务或二进制文件)交谈时,您需要使用字节字符串。在

想把Unicode字符串写入PNG文件吗?不明智。想要base64解码字符串Y2Fm6Q==?在这里不能合理地使用Unicode字符串,base64是显式的字节。在

当然,Python通常允许您在需要字节字符串的地方传递unicode字符串,但只能自动编码为ASCII。如果字符串包含非ASCII字符,您将得到UnicodeError,就像您在需要unicode的地方使用字节一样。“Unicode是对的,字节是错误的”是一个破坏性的神话。这两种类型的字符串都需要操作。在

如果您担心到Python3的转换,您当然应该将字符串标记为u'',但是您还应该显式地将字节字符串标记为b''。不重要的字符串可以保留为'',并让它们在python3上从字节字符串转换为unicode字符串。在很多情况下,Python2使用字节,而Python3使用Unicode,这是合适的。但是仍然有很多情况下,您确实需要讨论字节,并且将其转换为python3作为unicode将导致问题。在

(唯一的问题是b''语法需要Python2.6或更高版本,因此使用它将使您与早期版本不兼容。)

相关问题 更多 >

    热门问题