跳转到主要内容

用于在字符串或字节字面量中使用一致转义风格的flake8插件

项目描述

flake8-escaping-style

一个flake8插件,帮助在整个项目中保持字符串和字节字面量中转义序列的一致风格。

安装

此插件至少需要Python 3.7版本。

与大多数flake8插件一样,首先安装包

pip install flake8-escaping-style

然后在您的flake8配置中,使用匹配您偏好的selectignore组合。

例如,如果您想防止除\N{字符名称}之外的所有转义,它将看起来像这样

select=ESC1
ignore=ESC105

错误代码列表

对于字符串字面量(str

错误代码 转义序列样式 示例字符串("café"
ESC101 八进制(3位) "caf\351"
ESC102 十六进制(2位) "caf\xe9"
ESC103 十六进制(4位) "caf\u00e9"
ESC104 十六进制(8位) "caf\U000000e9"
ESC105 命名字符 "caf\N{latin small letter e with acute}"

对于字节字符串字面量(bytes

为了完整性,此插件还可以检测字节字符串字面量中的转义风格

错误代码 转义序列样式 示例字节字符串
ESC201 八进制(3位) “caf\351”
ESC202 十六进制(2位) “caf\xE9”

动机

Python有多种不同的方式来编写转义序列

在Python 2的旧时代,任何文件都被假定为ASCII编码,除非你在一行的开头添加特殊注释。这意味着如果你想在源代码中写入字符串"café",你必须要么在文件的第行开头添加这个注释,要么使用转义序列如"caf\xe9""caf\u00E9"

如今,Python已经取消了这些限制,并使用更实用的默认编码(utf-8,参见PEP3120)。因此,对于大多数字符串字面量,你可以使用你想要的字符,而不必使用转义序列。

我仍然建议在使用“奇怪”的[1]字符和特别是不可见字符时使用转义序列。但在此情况下,我喜欢使用“命名字符”转义样式\N{name}

[1]:“奇怪”的意思是任何在我键盘上需要超过两个手指才能输入的字符。

以一个非断行空格为例。这是一个很实用的字符,有时非常有用,但它也可能导致一些艰难的调试。

你能看出区别吗?

>>> "hello world" == "hello world"
False

在这里使用转义序列(而不是字符本身)可以使正在发生的事情更加明显。

>>> "hello world" == "hello\xa0world"
False

在我看来,这更好,但仍然需要知道哪个字符的十六进制数字是A0。最佳选项是使用命名转义序列。

>>> "hello world" == "hello\N{no-break space}world"
False

因此,我更喜欢在我的项目中只使用“命名”风格的转义序列(ESC105)。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

flake8-escaping-style-0.1.2.tar.gz (5.4 kB 查看哈希值)

上传时间 源代码

构建分发

flake8_escaping_style-0.1.2-py2.py3-none-any.whl (5.7 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面