ArcGIS'i metin alanına önde gelen sıfırları dahil etmek mi istiyorsunuz?


9

Aslında bir 5 sayı kimliği olan bir metin alanına karakterler giriyorum. Ben değeri dahil olmak üzere önde gelen sıfırlar gerekir, ancak her girdiğinde veya alan hesaplamak, alan sıfırları (alan özellikleri 5 karakter metin alanı olduğunu söylüyor olsa bile) kaldırılır.

Alanı baştaki sıfırları dahil etmeye nasıl zorlarım?

Yanıtlar:


12

Python önde gelen sıfırlar için yerleşiktir. str.zfill()Metin alanına baştaki sıfırlar eklemek için kullanın .

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 adresinden örnek )

Bu yüzden alan hesaplayıcısında sadece kimliğinizle alanın adını belirtmeniz ve ardından sıfırlarla doldurmanız gerekir

str(!myfield!).zfill(5)

resim açıklamasını buraya girin

Ve sonuç:

resim açıklamasını buraya girin

Alan hesaplayıcısını "Python Parser" olarak değiştirmeyi unutmayın


Tamam, bu çok basit görünüyor. Bir deneyeceğim! Teşekkürler.
CJSF

Peki! Bu tam olarak ihtiyacım olan şeydi ve çok kolaydı, neredeyse utanıyorum! Çok teşekkürler!
CJSF

3

Sadece metninizi tırnak içine alın. VB Script modundaysanız çift tırnak, Python modunda ise çift veya tek tırnak.

Açıklamak için: Sadece sayıları girdiğinizde, Alan Hesaplayıcı'ya tamsayı biçiminde bir değer veriyorsunuz ve bu değer dize türü alanına girmek için sizin için bir dizeye dönüştürülecek. Tamsayılar için, baştaki sıfırların hiçbir değeri ve anlamı yoktur, bu nedenle atlanırlar. Tırnak içine koyarsanız, bunun yerine zaten doğru veri türü olan bir dize geçirirsiniz, bu yüzden yalnız kalır.

Bu ayrıca bu alanın aslında "Metin" türünde olduğunu varsayar. Belki de bu davranışa neden olacak Uzun veya Kısa Tamsayı olarak ayarlanmıştır.


Teşekkürler, sanırım bu da işe yarayacak. Ama sonunda, daha büyük bir yarı otomatik sürecin parçası olarak başka bir alanın bir kısmındaki önde gelen sıfırlar olmadan değeri almam gerekecek.
CJSF

Sorunuzu düzenleyebilir ve daha fazla ayrıntı ve şu anda sahip olduğunuz kodun tamamını ekleyebilirseniz, muhtemelen size daha iyi yardımcı olabiliriz. Bir grup satıra manuel olarak değerler yazıyormuşsunuz gibi geldi.
PhilippNagel

2

Bir Python kod bloğu kullanabilirsiniz .

Bu fonksiyon tanımını kod bloğuna ekleyin:

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

Aşağıdaki gibi kullanabilirsiniz:

addZero(!Field!) # numeric field

veya

addZero(123) # for example

Üst sınırlar için <= tanımlarını yapmak istersiniz :)
MaryBeth

@MaryBeth evet, benim hatam. Düzenlendi
aldo_tapia

2

Diğer cevaplarda belirtildiği gibi, sayılarınızın dizgeye dönüştürüldüğünden emin olmanız gerekir.

0'larınızı kaybederseniz veya sayısal bir alana sahipseniz, bir dize sütunu genişliği 5 oluşturun, aşağıdaki Python komutunu yazmanız yeterlidir:

str(!MYFIELD!).zfill(5)

@Midavalo! Çok yavaştım: D
gisnside
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.