这对我来说毫无意义。我定义了5个变量:
a='a'
b='b'
c='c'
d='d'
e='e'
然后,我尝试使用这些变量构建一个命令:
command = "for i in \`python {0}_getSyslogs.py {1} {2} {3}\`\ndo\ngunzip -c {3}/\$i | egrep -i '{4}' >> " .format(a,b,c,d,e)
这与预期的一样工作,使用结果命令:
"for i in \\`python a_getSyslogs.py b c d\\`\ndo\ngunzip -c d/\\$i | egrep -i 'e' >> "
让我感到困惑的是,如果我在字符串中再添加一个组件(即"test"),整个字符串就会分崩离析,因为没有更多的替换操作在进行:
command = "for i in \`python {0}_getSyslogs.py {1} {2} {3}\`\ndo\ngunzip -c {3}/\$i | egrep -i '{4}' >> " + "test" .format(a,b,c,d,e)
生成的命令如下所示:
"for i in \\`python {0}_getSyslogs.py {1} {2} {3}\\`\ndo\ngunzip -c {3}/\\$i | egrep -i '{4}' >> test"
这可能是一个“透过树看不到森林”的问题,但我已经尝试了各种不同的组合,但都没有效果。
我在CentOS上运行Python2.7.10:
sys.version '2.7.10 (默认,Oct 6 2017,22:29:07) \nGCC 4.2.1 Compatible LLVM 9.0.0 (clang-900.0.31)'
我做错了什么?
发布于 2018-06-02 02:46:04
试试这个:(command+"test").format(a,b,c,d,e)
,也就是把它放在括号里。您当前的方法仅在"test"
上使用格式
发布于 2018-06-02 02:43:04
您只在“format
”字符串上应用了测试函数。
尝试:
command = "for i in \`python {0}_getSyslogs.py {1} {2} {3}\`\ndo\ngunzip -c {3}/\$i | egrep -i '{4}' >> test" .format(a,b,c,d,e)
发布于 2018-06-02 02:43:08
为什么不干脆,
"... >> test".format(a,b,c,d,e)
而不是
"... >> " + "test".format(a,b,c,d,e)
.format
仅适用于一个string
对象,并且您正在将其应用于"test"
。
如果您确实想要连接两个字符串,首先将它们存储在一个变量中,然后执行所需的操作。
str1 = "example{} " + "test"
str1.format('3')
# example3 test
https://stackoverflow.com/questions/50649316
复制相似问题