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

How to check python scripts for f-strings which are missing the f literal? (for pre-debugging / lint)

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

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

我经常犯这个错误;我的IDE不报,程序运行无异常

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

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

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

>>> text.format(result=1)
'results is 1'
>>> text.format(result=3)
'results is 3'

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

然而,对于您所寻求的,PyLint 正在发生一些事情: this issue is 3 years old, but it is exactly what you need, and recently - three days ago - an user submitted a pull request 当前是 WIP,应该可以解决您的问题。