Python - .format中的.format

时间:2017-06-19 13:27:52

标签: python format

我真的很喜欢使用.format来调用命令而不是重复自己。我有这个功能

def function_2()
    function_1('command {0} {2}')

然后在另一个函数中

subprocess.call(['{0}; {1}; {2}; command {0} {2}'.format(var_0, var_1, var_2)])

我想使用第一个函数中定义的变量,只需调用它们,就像我在第一个函数中一样。我不想在两个函数中都使用.format重复自己。

如果第二个函数中该字符串为“{0}”,为什么编译器不会将其拾取并在第一个函数中将其视为与“{0}”相同。当你通过参数传递{}时,它不会把它拿起来?

有没有办法以简单的方式做到这一点?毕竟我想要这样的东西:

{0} {2} 

这暂时不起作用。它打印出来......

{{1}}

2 个答案:

答案 0 :(得分:1)

使用command Concat上一个字符串。您不需要格式化command中保留的新占位符:

def function_1(command):
    s = '{0} ; {1} ; {2}; ' + command
    subprocess.call([s.format(var_0, var_1, var_2)])

command中的占位符现在用于以下行中的格式化。

为了使command的定位更加灵活,您可以将花括号加倍,并应用预格式化步骤。

def function_1(command):
    s = '{{0}} ; >>> '{{0}} {0}'.format('command {0} {2}')
'{0} command {0} {2}'
 ; {{2}}; {0}'.format(command)
    subprocess.call([s.format(var_0, var_1, var_2)])

演示:

User

答案 1 :(得分:0)

希望这是你所期待的。

 subprocess.call(['{var0}; {var1}; {var2}; command {var0} {var2}'.format(var0=var_0, var1=var_1, var2=var_2)])