将%替换为字符串中的数字

2024-10-01 15:44:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个类赋值,它要求我把%后面跟一个数字替换成它对应的位置参数(如果有的话,假设只有这样的数字和所需的参数)可用搜索堆栈溢出和web,但之前提出的问题只替换整数用一些很简单的东西。在

例如: 格式化(“出埃及记%0”,“摩西”)-->;应返回“出埃及记摩西”

格式化(“出埃及记%0和%1”,“国王”,“众神”)-->;应返回“出埃及记国王和神”

格式化(“出埃及记%1和%0”,“国王”,“众神”)-->;应返回“出埃及记众神和国王”

从外观上看,我认为函数格式化原型应该是

def formatting(inputstring, *args):

到目前为止我尝试过的事情

1.for循环将%number天真地替换为其相应的参数

^{pr2}$

当然这行不通,因为它们是字符串而不是整数

2.使用inputstring.format()返回所需的字符串。 问题是由于参数长度的变化而引起的 例如:

if len(args) == 1:    
    return inputstring.replace("%0",args[0])
if len(args) == 2:
    inputstring = inputstring.replace("%0",args[0])
    return inputstring.replace("%1",args[1])

很简单,很有效!但感觉不对,很多争论都很麻烦 试着在一个循环中这样做没有成功

请帮忙 谢谢!在


Tags: 字符串gt参数lenreturnif堆栈args
1条回答
网友
1楼 · 发布于 2024-10-01 15:44:49

你差点就在这儿了:

for length in xrange(len(args)):
    temp = temp.replace("%length","arg[length]")

考虑:

^{pr2}$

如果你做了替换,就会发生错误的事情:

^{3}$

你想这样做:

>>> s.replace("%0", "something")
'Hello %length there something man'

怎么做?对于给定的索引,必须先构造字符串"%",然后再从args中获取该值:

>>> i = 0
>>> "%" + str(i)
'%0'
>>> args[i]
'something'    
>>> s.replace("%" + str(i), args[i])
'Hello %length there something man'

所以你的循环应该是这样的:

>>> for i in xrange(len(args)):
        temp = temp.replace("%" + str(i), args[i])

或者,更pythonical,您可以使用enumerate,它允许您迭代列表并同时获得索引:

>>> for i, arg in enumerate(args):
        temp = temp.replace("%" + str(i), arg)

相关问题 更多 >

    热门问题