Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否有一个工具可以自动将字符串格式类型转换为f字符串?_Python_String_Formatting_F String - Fatal编程技术网

Python 是否有一个工具可以自动将字符串格式类型转换为f字符串?

Python 是否有一个工具可以自动将字符串格式类型转换为f字符串?,python,string,formatting,f-string,Python,String,Formatting,F String,自python 3.6以来,将值格式化为字符串的最短和最有效的方法是(例如,f'Hello{name}') 将旧格式类型('Hello%s'%name,'Hello{}.format(name))转换为现有代码库中的新格式类型似乎是一项可以自动执行的任务,但我找不到任何工具来执行此操作。是否有一个工具可以自动将使用旧字符串格式的文本转换为f字符串?您可以使用它将多个python文件转换为使用f字符串 要运行它,您需要一个Python3.6+解释器。那么,就这么简单了: pip install f

自python 3.6以来,将值格式化为字符串的最短和最有效的方法是(例如,
f'Hello{name}'

将旧格式类型(
'Hello%s'%name
'Hello{}.format(name)
)转换为现有代码库中的新格式类型似乎是一项可以自动执行的任务,但我找不到任何工具来执行此操作。是否有一个工具可以自动将使用旧字符串格式的文本转换为f字符串?

您可以使用它将多个python文件转换为使用f字符串

要运行它,您需要一个Python3.6+解释器。那么,就这么简单了:

pip install flynt
flynt [relative or absolute path to the root of your project]
请记住,它将在适当的位置更改文件,因此建议将这些文件提交到您喜欢的git或SVC系统

下面是一篇文章,介绍f字符串的优缺点:

免责声明:我是flynt软件包的作者。

它看起来既能将
%
格式转换为
格式
调用,也能将
格式
调用转换为f字符串

printf样式字符串格式 可用性:

除非传递了
--keep percent format

'%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
在命令行上传递

'{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字符串。

确实要这样做吗?因为,如果你想与其他人共享你的代码,而他们的Python版本低于3.6,那么它对他们就不起作用了。@Nakor在我的公司Python3.5被弃用了,我们没有太多地使用Python2(6个月后也会弃用)。但你是对的,记住这一点很重要!有没有一种方法可以在目录上递归调用它?在库本身上找不到有关此的说明。@mari.mts,但您始终可以运行
find-名称'*.py'-exec pyupgrade{}\
pyupgrade**/*.py