我有一个巨大的字符串,如下所示:
100hello100string100formatting ...
此外,100
是动态值。在原始字符串中,有{60}次出现100
。如何格式化字符串以便我只能传递一次参数?
我目前正在做以下事情:
"%dhello%dstring%dformatting%d ..." % (100, 100, 100, ...)
有没有办法只传递一次100
值,以便它对所有其他参数采用相同的值?
答案 0 :(得分:2)
尝试字符串formatting(see also PEP):
"{0}hello{0}string{0}formatting".format(100)
# '100hello100string100formatting'
答案 1 :(得分:1)
我建议使用str.join
。
如果您有60次出现100
,这也意味着您的字符串中有60个单词。很可能你从某个地方获得了这些词,例如从文件,数据库或用户输入。
假设您可以将所有这些单词放入列表中,为什么不加入列表中的元素,而不是输入所有单词的麻烦?
>>> words = ['hello', 'string', 'formatting']
>>> '100'.join(words)
hello100string100formatting
为此,您的动态值100
必须是字符串,因此如果它存储为数字,则需要先将其转换为:
>>> num = 100
>>> str(num).join(words)
答案 2 :(得分:0)
"%dhello%dstring%dformatting" % (*[100]*3,)
基本上,您创建一个包含所需值的临时列表([100]
),将其乘以您需要的值(*3
)并将其与*
前置,以便你解压缩列表
答案 3 :(得分:0)
如果您使用的是python版本3.X
,这可能对您有用“{100}想要吃{100}”。格式(100 =“你期望的结果”)
答案 4 :(得分:0)
首先创建一个模板字符串,在其中放置一些特殊字符,其中应包含动态值。
示例:## hello ## string ## formatting
然后创建一个函数,使用regex替换给定参数的字符串中的##。
<强>代码强>
def getString(value, string) :
newString = string.replace('##', str(value))
return newString
template = '##hello##string##formatting'
replaceHundred = getString(100, template)
replaceTwoHundred = getString(200, template)
.
.
replacedString = getString( anyValue , template)