पाठ क्षेत्र में अग्रणी शून्य को शामिल करने के लिए आर्कगिस प्राप्त करना?


9

मैं एक टेक्स्ट फ़ील्ड में वर्ण दर्ज कर रहा हूं जो अनिवार्य रूप से एक 5 नंबर आईडी है। मुझे मूल्य में शामिल करने के लिए अग्रणी शून्य की आवश्यकता है, लेकिन हर बार जब मैं क्षेत्र में प्रवेश करता हूं या गणना करता हूं, तो प्रमुख शून्य हटा दिए जाते हैं (भले ही क्षेत्र के गुण कहते हैं कि यह एक 5 चरित्र पाठ क्षेत्र है)।

मैं अग्रणी शून्य को शामिल करने के लिए फ़ील्ड को कैसे बाध्य करूं?

जवाबों:


12

पायथन में अग्रणी शून्य के लिए एक अंतर्निहित है। 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 से )

इसलिए फ़ील्ड कैलकुलेटर में आपको बस अपनी आईडी के साथ फ़ील्ड का नाम निर्दिष्ट करना होगा और फिर शून्य से भरना होगा

str(!myfield!).zfill(5)

यहाँ छवि विवरण दर्ज करें

और अंतिम परिणाम:

यहाँ छवि विवरण दर्ज करें

फ़ील्ड कैलकुलेटर को "पायथन पार्सर" पर स्विच करना याद रखें


ठीक है, यह बहुत सरल लगता है। मै उसे करने की एक कोशिश तो करूंगा! धन्यवाद।
CJSF

ठीक है! यह वही है जो मुझे चाहिए था और इतना आसान था, मैं लगभग शर्मिंदा हूँ! बहुत बहुत धन्यवाद!
CJSF

3

बस अपना पाठ उद्धरणों में रखें। डबल उद्धरण यदि आप वीबी स्क्रिप्ट मोड में हैं, और पायथन मोड में डबल या सिंगल हैं।

समझाने के लिए: जब आप केवल संख्या दर्ज करते हैं, तो आप पूर्णांक रूप में फ़ील्ड कैलकुलेटर को एक मान दे रहे हैं, जो इसे स्ट्रिंग प्रकार फ़ील्ड में दर्ज करने के लिए आपके लिए एक स्ट्रिंग में परिवर्तित हो जाएगा। पूर्णांक के लिए, अग्रणी शून्य का कोई मूल्य नहीं है और इसका कोई अर्थ नहीं है, इसलिए उन्हें छोड़ दिया गया है। यदि आप इसे उद्धरण में रखते हैं, तो आप इसके बजाय इसे एक स्ट्रिंग पास कर रहे हैं, जो पहले से ही सही डेटा प्रकार है, इसलिए यह अकेला छोड़ दिया जाता है।

यह भी मानता है कि यह क्षेत्र वास्तव में "टेक्स्ट" प्रकार का है। हो सकता है कि इसे लॉन्ग या शॉर्ट इंटेगर में सेट किया गया था, जो इस व्यवहार का कारण भी बनेगा।


धन्यवाद, मुझे लगता है कि यह भी काम करेगा। लेकिन मुझे अंततः एक बड़ी अर्ध-स्वचालित प्रक्रिया के हिस्से के रूप में किसी अन्य क्षेत्र के प्रमुख शून्य के बिना मूल्य को हथियाने की आवश्यकता होगी।
CJSF

यदि आप अपने प्रश्न को संपादित कर सकते हैं और कुछ और विवरण और वर्तमान में आपके पास मौजूद पूरे कोड को जोड़ सकते हैं, तो हम शायद आपकी बेहतर मदद कर सकते हैं। ऐसा लग रहा था कि आप पंक्तियों के एक समूह के लिए मैन्युअल रूप से मान लिख रहे थे।
फिलिप्नगेल

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

आप ऊपरी सीमाओं के लिए परिभाषाएँ बनाना चाहेंगे <= :)
मैरीबेट

@ मैरीबैथ हां, मेरी गलती है। संपादित
aldo_tapia

2

जैसा कि अन्य उत्तरों में बताया गया है, आपको यह सुनिश्चित करने की आवश्यकता है कि आपके नंबर स्ट्रिंग्स में परिवर्तित हो गए हैं।

यदि आप अपने 0 को खो देते हैं या उन्हें एक संख्यात्मक क्षेत्र में रखते हैं, तो एक स्ट्रिंग स्तंभ चौड़ाई 5 बनाएं, बस निम्न पायथन में टाइप करें:

str(!MYFIELD!).zfill(5)

@Midavalo के स्वामित्व में! मैं बहुत धीमा था: D
Gisnside
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.