क्षेत्र गणना में अल्फ़ान्यूमेरिक मान से संख्यात्मक वर्ण निकालना?


9

मेरे पास निम्नलिखित प्रारूप में अल्फ़ान्यूमेरिक मानों वाला एक क्षेत्र है:

A-AA00

कभी-कभी वे भी होते हैं

A-AAA0

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

A-AA0

यह बन जाता है:

A-AA

मैं सांख्यिक वर्णों को किसी अन्य क्षेत्र के संख्यात्मक वर्णों से बदलना चाहता हूं। यह स्टैक एक्सचेंज प्रविष्टि इस मुद्दे को संबोधित करती है, लेकिन स्ट्रिंग में संख्या से पहले एक स्थान होता है और इसका उपयोग विभाजन और अनुक्रमण के लिए किया जा सकता है ... मेरे तार इतनी आसानी से निर्मित नहीं होते हैं।

जवाबों:


17

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

import re
def strip_digits(s):
    return re.sub("\d+", "", s)

इसके बाद गणना बॉक्स से इसे कॉल किया जा सकता है:

strip_digits(!column_name!)

यदि आप वर्णों को बदलना चाहते हैं, तो प्रतिस्थापन वर्णों के लिए फ़ंक्शन में एक और तर्क जोड़ें, और इसे रिक्त स्ट्रिंग के स्थान पर रखें।



4

मैंने इसे मैपिंग सेंटर (arcgis.com) में भी पाया।
संसाधन केंद्र पाठ प्रबंधन उपकरण

यह 9.2 / 9.3 के लिए लिखा गया पुराना कोड है। 10.x के लिए उपयुक्तता के बारे में निश्चित नहीं है। विवरण पढ़ता है ...

  1. बैच ढूंढें और बदलें: यह उपकरण एक टेक्स्ट फ़ील्ड में स्ट्रिंग को पॉपिंग स्ट्रिंग्स के साथ पॉप्युलेट करता है जो फाइंड / रिप्लेसमेंट टेबल में निर्दिष्ट हैं। यह लेबल स्ट्रिंग को मानकीकृत करने या मानक संक्षिप्ताक्षर लागू करने और लागू करने के लिए उपयोगी है।
  2. पाठ को उचित मामले में परिवर्तित करें: यह उपकरण एक क्षेत्र में पाठ स्ट्रिंग को परिवर्तित करता है (सभी ऊपरी या सभी निचले मामले को माना जाता है) एक उचित मामले (मिश्रित ऊपरी और निचले मामले) को दूसरे (नए) फ़ील्ड में पाठ स्ट्रिंग। यह उपकरण पूर्वोत्तर के लिए NE जैसे सामान्य संक्षिप्तीकरण को संभालने के लिए लिखा गया है, ताकि यह Ne के रूप में बाहर न आए।
  3. Hwy Shield Labels के लिए Hwy नंबर निकालें: राजमार्ग नाम के संख्यात्मक हिस्से को किसी अन्य टेक्स्ट फ़ील्ड में जोड़ता है।

ये सभी उपकरण पायथन में लिखे गए हैं और आपके पास किसी भी विशिष्ट आवश्यकताओं को पूरा करने के लिए संशोधित किए जा सकते हैं।


3

मैं इस सरल मामले से शुरू करूंगा:

>>> x = "A-AA00"
>>> print x
A-AA00
>>> print x.replace("0","")
A-AA
>>> 

वहाँ से ArcGIS 10 मदद से पायथन के लिए कुछ कोडब्लॉक उदाहरण आपको कुल समाधान के लिए एक हेडस्टार्ट देना चाहिए।


1
मुझे लगता है कि इसके साथ समस्या यह है कि गैर-0 अंकों को संभालने का कोई आसान तरीका नहीं है। इसलिए नियमित अभिव्यक्ति इतनी उपयोगी है, जैसा कि om_henners ने बताया है।
नंपेटर्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.