我正在做一个类分配,要求我用%后面跟一个数字替换其对应的位置参数(如果有的话,假设只给出了这些数字和必需的参数)。我一直在试图解决这个问题,但无济于事。搜索了Stack Overflow和Web,但是先前提出的问题仅将整数替换为足够容易的东西。
例如:formatting(“ Exodus%0”,“ Moses”)->应该返回“ Exodus Moses”
formatting(“出埃及记%0和%1”,“国王”,“神”)->应该返回“出埃及记国王和诸神”
格式设置(“出埃及记%1和%0”,“国王”,“神”)->应该返回“出埃及记众神与国王”
从外观上看,我认为函数格式化原型将是
def formatting(inputstring, *args):
到目前为止我尝试过的事情
1.for循环将%number天真地替换为其相应的参数
for length in len(args):
temp=temp.replace("%length","arg[length]")
当然,这是行不通的,因为它们是字符串而不是整数
2.使用inputstring.format()返回所需的字符串。问题是由参数长度Ex的变化引起的:
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])
很容易,它的工作原理!但是感觉不对,麻烦的很多参数试图在一个循环中执行此操作没有解决
请帮助谢谢!
您几乎在这里拥有它:
for length in xrange(len(args)):
temp = temp.replace("%length","arg[length]")
考虑:
>>> s = "Hello %length there %0 man"
>>> length = 0
>>> args = ["something"]
如果进行替换,则会发生错误的事情:
>>> s.replace("%length", "args[length]")
'Hello args[length] there %0 man'
您最终要这样做:
>>> 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])
或者,更Python地讲,您可以使用enumerate
,它使您可以遍历列表并同时获取索引:
>>> for i, arg in enumerate(args):
temp = temp.replace("%" + str(i), arg)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句