首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python .format未按预期工作

python .format未按预期工作
EN

Stack Overflow用户
提问于 2018-06-02 02:38:58
回答 4查看 93关注 0票数 2

这对我来说毫无意义。我定义了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)'

我做错了什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-06-02 02:46:04

试试这个:(command+"test").format(a,b,c,d,e),也就是把它放在括号里。您当前的方法仅在"test"上使用格式

票数 1
EN

Stack Overflow用户

发布于 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)
票数 2
EN

Stack Overflow用户

发布于 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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50649316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档