0

番号/バージョンのパディングを行うためのコードを書き出そうとしていますが、インターネットで検索しようとすると、それが機能する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

ポインタはありますか?

4

1 に答える 1

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'

これがどのように機能するか: (2 回目の試行 ;))

文字列処理を行う場合、「%」には特別な意味があります

"%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 です。数字のゼロ部分は変数から取得する必要があるため、文字列処理の 2 つのステップを実行する必要があるため、文字列処理の最初のラウンドで %%->% トリックを使用して % を取得します03i'

ここでは、論理的にグループ化するために括弧を使用しています。もちろん、実際のコードには括弧はありません:)

"(%%)0(%s)i" % num

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

(%)0(3)i
%03i
于 2014-03-24T10:39:25.533 に答える