mar*_*mts 6 python string formatting f-string
从python 3.6开始,将值格式化为字符串的最短,最高效的方法是PEP 498 f字符串(例如f'Hello {name}')。
在现有代码库中将旧的格式设置类型('Hello %s' % name,'Hello {}'.format(name))转换为新的格式设置似乎是可以自动化的任务,但是我找不到执行此操作的任何工具。是否有工具可以将使用旧字符串格式的文字自动转换为f字符串?
ika*_*men 19
您可以使用flynt将多个 python 文件转换为使用 f 字符串。
要运行它,您需要一个 python 3.6+ 解释器。然后,它就像这样简单:
pip install flynt
flynt [relative or absolute path to the root of your project]
Run Code Online (Sandbox Code Playgroud)
请记住,它会更改文件,因此建议将这些文件提交到您喜欢的 git 或 SVC 系统。
这是一篇描述 f-strings 优缺点的文章:
免责声明:我是 flynt 包的作者。
看起来pyupgrade既可以将%格式转换为format调用,也可以format调用 f-strings
printf 风格的字符串格式化
可用性:
除非
--keep-percent-format通过。Run Code Online (Sandbox Code Playgroud)'%s %s' % (a, b) # '{} {}'.format(a, b) '%r %2f' % (a, b) # '{!r} {:2f}'.format(a, b) '%(a)s %(b)s' % {'a': 1, 'b': 2} # '{a} {b}'.format(a=1, b=2)
f-字符串
可用性:
--py36-plus在命令行上传递。Run Code Online (Sandbox Code Playgroud)'{foo} {bar}'.format(foo=foo, bar=bar) # f'{foo} {bar}' '{} {}'.format(foo, bar) # f'{foo} {bar}' '{} {}'.format(foo.bar, baz.womp} # f'{foo.bar} {baz.womp}'
注意: pyupgrade 故意胆小,如果它会使表达式变长或者替换参数不是简单的名称或虚线名称(因为这会降低可读性),则不会创建 f 字符串。