如何将模块中的所有 printf 样式转换为 python 中的格式化样式?
How to convert all the printf-styles in a module to formatting style in python?
我正在尝试将模块从 python 版本 2.x 转换为 python 版本 3.x。为此,我正在使用 2to3
转换器。但是,由于我在该转换器中找不到任何参数也可以将 %s
或 printf-style
更改为 str.format()
样式,因此我只是尝试使用 pyupgrade 包,如下所示:
pyupgrade /path/to/myfile.py
不过这个也没有做任何改动。如果有转换器可以做到这一点,您有什么想法或建议吗?
例如
limit=None
ll = 23
limitQuery = 'LIMIT %s,%s'% (limit, ll)
print(limitQuery)
在 运行 这个命令之后它不会改变:
pyupgrade /Users/Eli/Desktop/test.py
该项目要么在这方面有一些错误,要么他们故意忽略不满足最低格式要求的代码。
您的示例失败,因为 '
和 %
字符之间没有 space:
$ echo "limitQuery = 'LIMIT %s,%s'% (limit, ll)" | pyupgrade -
limitQuery = 'LIMIT %s,%s'% (limit, ll)
当您添加 space 时,项目会正确转换语法:
$ echo "limitQuery = 'LIMIT %s,%s' % (limit, ll)" | pyupgrade -
limitQuery = 'LIMIT {},{}'.format(limit, ll)
我已经为该项目提交了 bug report。他们已经确认这是故意的:
this is one of the timid parts of pyupgrade, if your code is not well formatted to begin with it won't try to fix it for you.
希望这会在文档中明确说明。
要解决此问题,您可以先 运行 代码中的 black code formatter; black 将执行 PEP 8 标准并为您插入 space:
$ echo "limitQuery = 'LIMIT %s,%s'% (limit, ll)" | black -q - | pyupgrade -
limitQuery = "LIMIT {},{}".format(limit, ll)
我正在尝试将模块从 python 版本 2.x 转换为 python 版本 3.x。为此,我正在使用 2to3
转换器。但是,由于我在该转换器中找不到任何参数也可以将 %s
或 printf-style
更改为 str.format()
样式,因此我只是尝试使用 pyupgrade 包,如下所示:
pyupgrade /path/to/myfile.py
不过这个也没有做任何改动。如果有转换器可以做到这一点,您有什么想法或建议吗?
例如
limit=None
ll = 23
limitQuery = 'LIMIT %s,%s'% (limit, ll)
print(limitQuery)
在 运行 这个命令之后它不会改变:
pyupgrade /Users/Eli/Desktop/test.py
该项目要么在这方面有一些错误,要么他们故意忽略不满足最低格式要求的代码。
您的示例失败,因为 '
和 %
字符之间没有 space:
$ echo "limitQuery = 'LIMIT %s,%s'% (limit, ll)" | pyupgrade -
limitQuery = 'LIMIT %s,%s'% (limit, ll)
当您添加 space 时,项目会正确转换语法:
$ echo "limitQuery = 'LIMIT %s,%s' % (limit, ll)" | pyupgrade -
limitQuery = 'LIMIT {},{}'.format(limit, ll)
我已经为该项目提交了 bug report。他们已经确认这是故意的:
this is one of the timid parts of pyupgrade, if your code is not well formatted to begin with it won't try to fix it for you.
希望这会在文档中明确说明。
要解决此问题,您可以先 运行 代码中的 black code formatter; black 将执行 PEP 8 标准并为您插入 space:
$ echo "limitQuery = 'LIMIT %s,%s'% (limit, ll)" | black -q - | pyupgrade -
limitQuery = "LIMIT {},{}".format(limit, ll)