如何检查缺少 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
是否确实在内部使用了变量,例如 pylint
和 flake8
已经在使用。
然而,对于您所寻求的,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,应该可以解决您的问题。
我经常忘记在格式化字符串前加上“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
是否确实在内部使用了变量,例如 pylint
和 flake8
已经在使用。
然而,对于您所寻求的,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,应该可以解决您的问题。