लुबर, मैंने आपका पोस्ट स्टैक ओवरफ्लो में देखा था, लेकिन स्थिरता के लिए यहां एक समान उत्तर पोस्ट करने जा रहा हूं। यह एक अच्छा सवाल है। मैं पता सत्यापन उद्योग में काम करता हूं और इससे पहले आपकी तरह की समस्या से निपट चुका हूं।
मैं एक टिप्पणी में इस ढेर अतिप्रवाह सवाल से जुड़ा ; और यह जानना महत्वपूर्ण है कि पूर्ण फ्रीफ़ॉर्म स्ट्रीट पतों के प्रारूप के बारे में वास्तव में कोई गारंटी नहीं है। जैसा कि लिंक्ड पोस्ट में बताया गया है, पूर्ण पते इनमें से किसी भी तरह दिख सकते हैं:
1) 102 मुख्य सड़क एनीटाउन, राज्य
2) 400n 600e # 2, 52173
3) पो # 104 60203
4) 1234 LKSDFJlkjsdflkjsdljf #asdf 12345
5) 205 1105 14 90210
(कारणों को लिंक किए गए पोस्ट में समझाया गया है।) मुझे पता है कि जियोपी एक निश्चित प्रारूप में पते देता है - उपयोग किए गए जियोकोडर के आधार पर (जो परिणामस्वरूप प्रारूप जियोपी के नियंत्रण से बाहर है), लेकिन पते एक निश्चित सीमा के भीतर सभी तरह के तरीके देख सकते हैं। घटक (जैसे अल्पविराम), और यह जानना महत्वपूर्ण है कि मानकीकृत पते में अल्पविराम नहीं हैं (यूएसपीएस पब्लिकेशन 28 के अनुसार)।
मैंने हाल ही में LiveAddress नामक एक एपीआई पर काम करने में मदद की ; इसे सिर्फ जियोकोडिंग और सिंगल-लाइन एड्रेस पार्सिंग को सपोर्ट करने के लिए अपग्रेड किया गया था।
जियोपी को जियोकोड के लिए डिज़ाइन किया गया है, घटकों में पार्स नहीं (यह कार्य वास्तव में उन कारणों से वास्तव में मुश्किल है जो मुझे यहाँ नहीं मिलेंगे)। LiveAddress , हालांकि, पते को संक्षिप्त करेगा और निर्देशांक और पते के बारे में अन्य जानकारी लौटाएगा, और केवल तभी पते वास्तविक होंगे; कोई "अनुमान नहीं" परिणाम।
पायथन का उपयोग करने वाले घटकों में एकल-पंक्ति पते को पार्स करने के लिए, बस पूरे पते को "सड़क" फ़ील्ड में डालें:
import json
import pprint
import urllib
LOCATION = 'https://api.smartystreets.com/street-address/'
QUERY_STRING = urllib.urlencode({ # entire query sting must be URL-Encoded
'auth-token': r'YOUR_API_KEY_HERE',
'street': '1 infinite loop cupertino ca 95014'
})
URL = LOCATION + '?' + QUERY_STRING
response = urllib.urlopen(URL).read()
structure = json.loads(response)
pprint.pprint(structure)
परिणामी JSON ऑब्जेक्ट में एक components
ऑब्जेक्ट होगा जो कुछ इस तरह दिखाई देगा:
"components": {
"primary_number": "1",
"street_name": "Infinite",
"street_suffix": "Loop",
"city_name": "Cupertino",
"state_abbreviation": "CA",
"zipcode": "95014",
"plus4_code": "2083",
"delivery_point": "01",
"delivery_point_check_digit": "7"
}
प्रतिक्रिया में संयुक्त first_line और delivery_line_2 भी शामिल होंगे, ताकि आपको ज़रूरत पड़ने पर मैन्युअल रूप से उन लोगों से संपर्क न करना पड़े।