如何检查 python 脚本中缺少 f 文字的 f 字符串?(用于预调试/lint)

Ber*_*ala 5 python debugging pylint

我经常忘记在格式化字符串前加上“f”前缀。

一个错误的例子: text = "results is {result}"
它应该在哪里 text = f"results is {result}"

我经常犯这个错误;我的IDE没有报告它,并且程序运行没有异常。

我想也许扫描我的源代码中是否有带引号的字符串,检查 {,} 字符,并搜索它是否缺少前缀“f”文字;

但我想,使用解析器更好?或者也许有人已经这样做了?

cri*_*sal 4

问题是这text = "results is {result}"是一个有效的模板字符串,因此您稍后可以在程序中使用它,例如:

>>> text.format(result=1)
'results is 1'
>>> text.format(result=3)
'results is 3'
Run Code Online (Sandbox Code Playgroud)

您可以实现的只是检查 an 是否f-string确实在内部使用了变量,例如pylintandflake8已经这样做了。

然而,对于你所寻求的,PyLint 发生了一些事情: 这个问题已经有 3 年历史了,但这正是你所需要的,最近 - 三天前 - 一个用户提交了一个当前处于 WIP 的拉取请求,并且应该解决你的问题。

  • 我会检查一下。过去 5 年我只使用过一次 str.format,我不介意偶尔出现漏报。OTOH,我所说的错误每天发生两次...... (2认同)