回答:
Pythonには、先行ゼロの組み込み機能があります。str.zfill()
テキストフィールドに先行ゼロを追加するために使用します。
my_string = "1"
print my_string.zfill(2) # Prints 01
my_string = "1000"
print my_string.zfill(2) # Prints 1000
(https://stackoverflow.com/a/21620624/5754917の例)
したがって、フィールド計算機では、フィールドの名前をIDで指定し、ゼロを入力するだけです。
str(!myfield!).zfill(5)
そして最終結果:
フィールド計算機を「Python Parser」に切り替えることを忘れないでください
テキストを引用符で囲みます。VBスクリプトモードの場合は二重引用符、Pythonモードの場合は二重または単一引用符。
説明するには:数値を入力するだけで、フィールド計算機に整数形式の値を与えます。これは、文字列型フィールドに入力するために文字列に変換されます。整数の場合、先行ゼロは値も意味もないため、省略されます。引用符で囲むと、代わりに文字列が渡されます。これはすでに正しいデータ型であるため、そのままになります。
これは、このフィールドが実際には「テキスト」タイプであると想定しています。多分それはLongまたはShort Integerに設定されたのかもしれませんが、それもこの動作を引き起こします。
Pythonコードブロックを使用できます。
この関数定義をコードブロックに追加します。
def addZero(value):
if value <= 9:
output = '0000' + str(value)
elif value <= 99:
output = '000' + str(value)
elif value <= 999:
output = '00' + str(value)
elif value <= 9999:
output = '0' + str(value)
return output
次のように使用できます。
addZero(!Field!) # numeric field
または
addZero(123) # for example
他の回答で述べたように、数値が文字列に変換されていることを確認する必要があります。
0を失うか、数値フィールドに0が含まれる場合は、文字列の列幅5を作成し、次のPythonコマンドを入力します。
str(!MYFIELD!).zfill(5)