Maya中的数字/版本填充

时间:2014-03-24 10:08:29

标签: python maya mel

我正在尝试编写一个用于执行数字/版本填充的代码,但是当我尝试通过互联网搜索时,我却只能找到一个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

任何指针?

1 个答案:

答案 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