Python Maya中的填充数量/版本
我试图写一个代码来填充数字/版本,但当我试图通过互联网搜索时,我只能找到一个MEL示例,在其中它可以工作,但对我来说没有意义(很可能我不理解它是如何工作的) 但是,当我尝试将其转换为Python样式时,我得到了以下结果: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:无法连接“
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