Python Maya中的填充数量/版本

Python Maya中的填充数量/版本,python,maya,mel,Python,Maya,Mel,我试图写一个代码来填充数字/版本,但当我试图通过互联网搜索时,我只能找到一个MEL示例,在其中它可以工作,但对我来说没有意义(很可能我不理解它是如何工作的) 但是,当我尝试将其转换为Python样式时,我得到了以下结果: padding = '3' num = '5' pad = ("%0"+padding+"d' % "+num) Result is: %03d' % 5 甚至在我尝试重新排列代码时,结果要么是错误的(如您所见,完全错误),要么是Maya错误,如TypeError:无法连接“

我试图写一个代码来填充数字/版本,但当我试图通过互联网搜索时,我只能找到一个MEL示例,在其中它可以工作,但对我来说没有意义(很可能我不理解它是如何工作的)

但是,当我尝试将其转换为Python样式时,我得到了以下结果:

padding = '3'
num = '5'
pad = ("%0"+padding+"d' % "+num)
Result is: %03d' % 5
甚至在我尝试重新排列代码时,结果要么是错误的(如您所见,完全错误),要么是Maya错误,如
TypeError:无法连接“str”和“int”对象

有什么建议吗

padding = '3'
num = '5'
pad = ("%%0%si" % padding) % int(num)
print pad # prints '005'
工作原理:

在字符串处理后,使用%%将%%转义为%:

In [17]: step1 = ("%%0%si" % padding)

In [18]: step1
Out[18]: '%03i'

In [19]: step2 = step1 % int(num)

In [20]: step2
Out[20]: '005'
工作原理:(第二次尝试;)

当我们处理字符串时,“%”有特殊的含义

"%s" Replaced with a string
"%i" Replaced with an integer
"%%" means I am an "%", kinda like \n is newline and \\ is \
%x可以通过在

"%10s" means a string padded to 10 with spaces
"%010i" means an integer padded to 10 with zeros
我们想要的是整数1,因为数字零部分必须来自一个变量,我们必须执行两个字符串处理步骤,因此我们在第一轮字符串处理中使用%%->%技巧,以获得%03i'

在这里,我使用括号将内容逻辑地分组在一起,在实际代码中当然没有括号:)


非常简单,您可以使用+str(num)代替+num@sshashank124它似乎不起作用。我得到
%03d“%5
作为我的输出很酷,它可以工作。。但是如果
padding
num
都是用户定义的,会发生什么呢?你的密码很硬,对吧?我尝试使用您的,但当我将其转换为
'3'
'5'
时,我得到了错误
类型错误:%d格式:需要数字,而不是str
您的错误是因为填充和num是字符串,“num”必须是整数,因为只有“%03i”将用零填充,%03s将用空格填充,我已经更改了代码,使其按您的期望进行强制转换:)我明白了。我一直在想,我可能需要对
padding
num
处的值做些什么,而不是
pad
。顺便问一下,你能解释一下
%%0%ii
是如何工作的吗?虽然你很好心地给我做了一个直观的解释,但我仍然无法理解这个概念。。也许你有一些我可以参考的链接?现在有意义了吗?顺便说一句,我想你错过了
int
中的填充
pad=(“%%0%si”%padding)%int(num)
,谢谢你的分解。是的,我想现在这对我来说有点意义,但我仍然需要一些消化:)
"%10s" means a string padded to 10 with spaces
"%010i" means an integer padded to 10 with zeros
"(%%)0(%s)i" % num

%% => %
"%s" % num => '3'

(%)0(3)i
%03i