我可以递归使用“%s”吗?

时间:2013-03-06 13:02:59

标签: python python-2.7 replace

我可以在Python 2.7中递归使用%s吗?我试过(Python新手提醒!)

spss.Submit('SAVE OUTFILE = "%s".')%os.path.join(wdir,"PrepareTableScript_%s.sav"%str(ver).zfill(2))

所以在替换%s的字符串中,还有另一个%s。我得到的错误是:

TypeError: unsupported operand type(s) for %: 'NoneType' and 'str'

但局部变量verwdir会正确打印出来。我是否会收到此错误,因为我尝试递归使用%s或者这个(尝试过的)代码出现了其他问题?

2 个答案:

答案 0 :(得分:5)

你没有在这里递归地使用任何,你只是嵌套表达式(很好)。

您的问题是您在%电话之外离开了第一个 Submit()运算符。您不是将它应用于字符串,而是应用于返回值,Submit()返回None。将其移到括号内:

spss.Submit('SAVE OUTFILE = "%s".' % 
    os.path.join(wdir, "PrepareTableScript_%s.sav" % str(ver).zfill(2))
)

答案 1 :(得分:3)

你有这个:

spss.Submit('SAVE OUTFILE = "%s".') % os.path.join(...)

应该是这样的:

spss.Submit('SAVE OUTFILE = "%s".' % os.path.join(...))