ArcGISでテキストフィールドに先行ゼロを含めるには?


9

基本的に5桁のIDであるテキストフィールドに文字を入力しています。値に先行ゼロを含める必要がありますが、フィールドを入力または計算するたびに、先行ゼロが削除されます(フィールドのプロパティで5文字のテキストフィールドと表示されている場合でも)。

フィールドに先行ゼロを含めるにはどうすればよいですか?

回答:


12

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」に切り替えることを忘れないでください


わかりました、これは非常に単純なようです。やってみます!ありがとう。
CJSF 2017

よし!これはまさに私が必要としていたもので、とても簡単でした。私はほとんど恥ずかしいです!本当にありがとう!
CJSF 2017

3

テキストを引用符で囲みます。VBスクリプトモードの場合は二重引用符、Pythonモードの場合は二重または単一引用符。

説明するには:数値を入力するだけで、フィールド計算機に整数形式の値を与えます。これは、文字列型フィールドに入力するために文字列に変換されます。整数の場合、先行ゼロは値も意味もないため、省略されます。引用符で囲むと、代わりに文字列が渡されます。これはすでに正しいデータ型であるため、そのままになります。

これは、このフィールドが実際には「テキスト」タイプであると想定しています。多分それはLongまたはShort Integerに設定されたのかもしれませんが、それもこの動作を引き起こします。


ありがとう、これもうまくいくと思います。しかし、最終的には、より大きな半自動プロセスの一部として、別のフィールドの一部から先行ゼロなしで値を取得する必要があります。
CJSF 2017

質問を編集して、いくつかの詳細と現在のコード全体を追加できれば、私たちはおそらくより良い支援をすることができます。たくさんの行に手動で値を書き込んでいるように思えました。
PhilippNagel 2017

2

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

上限の定義は<=にする必要があります:)
MaryBeth

@MaryBethはい、私のせいです。編集済み
aldo_tapia 2017

2

他の回答で述べたように、数値が文字列に変換されていることを確認する必要があります。

0を失うか、数値フィールドに0が含まれる場合は、文字列の列幅5を作成し、次のPythonコマンドを入力します。

str(!MYFIELD!).zfill(5)

@Midavaloが所有しています。私は遅すぎた:D
gisnside '10 / 08/17
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.