รับ ArcGIS เพื่อรวมศูนย์นำหน้าในฟิลด์ข้อความหรือไม่


9

ฉันกำลังป้อนอักขระในช่องข้อความที่เป็น ID 5 หลัก ฉันต้องการนำศูนย์รวมอยู่ในค่า แต่ทุกครั้งที่ฉันป้อนหรือคำนวณเขตข้อมูลศูนย์นำหน้าจะถูกลบออก (แม้ว่าคุณสมบัติของเขตข้อมูลจะบอกว่าเป็นเขตข้อมูลข้อความ 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

เอาล่ะ! นี่คือสิ่งที่ฉันต้องการและเป็นเรื่องง่ายมากฉันเกือบจะอาย! ขอบคุณมาก!
CJSF

3

เพียงใส่ข้อความของคุณในเครื่องหมายคำพูด ใส่เครื่องหมายอัญประกาศคู่ถ้าคุณอยู่ในโหมด VB Script และเพิ่มเป็นสองเท่าถ้าอยู่ในโหมด Python

ในการอธิบาย: เมื่อคุณป้อนตัวเลขคุณจะให้ค่าฟิลด์เครื่องคิดเลขในรูปแบบจำนวนเต็มซึ่งจะแปลงเป็นสตริงสำหรับคุณเพื่อป้อนลงในฟิลด์ประเภทสตริง สำหรับจำนวนเต็มศูนย์นำไม่มีค่าและไม่มีความหมายดังนั้นพวกเขาจะถูกละเว้น หากคุณใส่ไว้ในเครื่องหมายคำพูดคุณจะส่งสตริงแทนซึ่งเป็นประเภทข้อมูลที่ถูกต้องอยู่แล้วดังนั้นมันจึงถูกทิ้งให้อยู่คนเดียว

นี่ก็ถือว่าฟิลด์นี้เป็นประเภท "ข้อความ" จริง ๆ อาจถูกตั้งค่าเป็น Long หรือ Short Integer ซึ่งอาจทำให้เกิดลักษณะการทำงานเช่นนี้


ขอบคุณฉันเดาว่ามันจะใช้ได้เหมือนกัน แต่ในที่สุดฉันจะต้องคว้าค่าโดยไม่มีศูนย์นำหน้าจากส่วนหนึ่งของเขตข้อมูลอื่นเป็นส่วนหนึ่งของกระบวนการกึ่งอัตโนมัติขนาดใหญ่
CJSF

หากคุณสามารถแก้ไขคำถามและเพิ่มรายละเอียดเพิ่มเติมและรหัสทั้งหมดที่คุณมีอยู่ในปัจจุบันเราอาจช่วยคุณได้ดีขึ้น ดูเหมือนว่าคุณเพิ่งเขียนค่าไปยังกลุ่มต่างๆด้วยตนเอง
PhilippNagel

2

คุณสามารถใช้การป้องกันรหัสหลาม

เพิ่มคำนิยามฟังก์ชั่นนี้ในบล็อกรหัส:

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

@ แมรี่เบ ธ ใช่ความผิดของฉัน แก้ไข
aldo_tapia

2

ดังที่ได้กล่าวไว้ในคำตอบอื่น ๆ คุณต้องแน่ใจว่าตัวเลขของคุณถูกแปลงเป็นสตริง

หากคุณสูญเสีย 0 หรือทำให้พวกเขาอยู่ในเขตข้อมูลตัวเลขให้สร้างความกว้างคอลัมน์สตริง 5 เพียงพิมพ์คำสั่ง Python ต่อไปนี้:

str(!MYFIELD!).zfill(5)

เป็นเจ้าของโดย @Midavalo! ฉันช้าเกินไป: D
gisnside
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.