我正在尝试编写一个用于执行数字/版本填充的代码,但是当我尝试通过互联网搜索时,我却只能找到一个MEL示例,但它没有意义对我来说(很可能我不明白它是如何运作的)
$padding = 3;
$num = 5;
string $pad = `python ("'%0"+$padding+"d' % "+$num)`;
// Results is: 005
但是当我尝试将其转换为Python样式时,我得到了以下结果:
padding = '3'
num = '5'
pad = ("%0"+padding+"d' % "+num)
Result is: %03d' % 5
或者当我尝试重新排列代码时,结果是错误的(完全错误,如您所见)或Maya错误,如TypeError: cannot concatenate 'str' and 'int' objects
任何指针?
答案 0 :(得分:1)
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'
这里我使用括号将逻辑分组在一起,当然在实际代码中没有括号:)
"(%%)0(%s)i" % num
%% => %
"%s" % num => '3'
(%)0(3)i
%03i