有没有办法只能在字符串格式中替换第一个参数?就像这样:
"My quest is {test}{}".format(test="test")
我希望输出为:
"My quest is test {}
第二个{}
arg稍后将替换。
我知道我可以创建一个字符串如下:
"My quest is {test}".format(test="test")
然后将它与剩余的字符串组合,创建新的字符串,但我可以一次完成吗?
有没有办法只能在字符串格式中替换第一个参数?就像这样:
"My quest is {test}{}".format(test="test")
我希望输出为:
"My quest is test {}
第二个{}
arg稍后将替换。
我知道我可以创建一个字符串如下:
"My quest is {test}".format(test="test")
然后将它与剩余的字符串组合,创建新的字符串,但我可以一次完成吗?
6条答案
按热度按时间mbzjlibv1#
如果你知道当你设置格式字符串时,你只会替换值的一个子集,并且你想保留一些其他的集合,你可以通过将括号加倍来转义那些你不打算立即填充的集合:
wgeznvg72#
使用命名参数,并保留其他参数,以便用相同的参数替换。
经常使用这个来“规范化字符串”,这样它们就可以预先适应一般的模式:
jhdbpxl93#
您必须编写自己的格式函数,该函数只进行一次替换。例如,给予你一些开始的东西(注意,这在某种程度上容易受到错误格式字符串的影响):
用法如下:
nc1teljy4#
在同一行中替换它的唯一方法是用另一个括号替换
"{test}"
。即:但这没什么意义,因为你本可以这么做
马上
您可以保留以下结果:
所以
s
里面有一个括号,等待被替换,如果需要的话,以后可以调用format
。vkc1a9a25#
实现这一点的正确方法可能是将string.Formatter类子类化,并使用其示例而不是string方法:
必须覆盖以下
Formatter
方法:get_value()
应该返回一些特殊的对象,而不是提升LookupError
。get_field()
应该将field_name
参数保存到这个对象中(或者如果对象不是我们的特殊对象,则正常进行)。convert_field()
应该只将conversion
参数保存到这个对象中,并且不进行转换(或者正常进行...)。format_field()
应该使用特殊对象的field_name
和conversion
属性以及此方法的format_spec
参数从特殊对象重构字段格式字符串(或正常进行...)。例如:
结果应该是
"hello {who.name!r:^16s}"
,其中"who.name"
是field_name
,"r"
是conversion
,"^16s"
是format_spec
,所有这三个值都被重新组合回"{who.name!r:^16s}"
,以便它可以在下一次格式化过程中使用。附加说明:特殊对象应该在访问任何属性(使用
.
)或项目(使用[]
)时返回其自身。prdp8dxp6#
您可以使用python中的replace功能来替换字符串,而不是使用format,这允许您以任何顺序执行此操作,并且一次替换一个字符串