Lubar, Stack Overflow에서 귀하의 게시물을 보았지만 일관성을 유지하기 위해 비슷한 답변을 게시하려고합니다. 좋은 질문입니다. 주소 확인 업계에서 일하고 있으며 이전에 귀하의 문제를 해결했습니다.
나는 연결 이 스택 오버플로 질문 코멘트에; 완전한 자유 주소 형식의 형식에 대한 보장이 없다는 것을 아는 것이 중요합니다. 링크 된 게시물에서 언급했듯이 전체 주소는 다음과 같습니다.
1) 102 메인 스트리트 애니 타운, 주
2) 400n 600e # 2, 52173
3) 포 # 104 60203
4) 1234 LKSDFJlkjsdflkjsdljf #asdf 12345
5) 205 1105 14 90210
(이 이유는 링크 된 게시물에 설명되어 있습니다.) GeoPy는 사용 된 지오 코더 (GeoPy의 제어 범위를 벗어난 결과 형식)에 따라 특정 형식으로 주소를 반환하지만 주소는 특정 형식 내에서 모든 종류의 방식을 볼 수 있음을 알고 있습니다 구성 요소 (예 : 쉼표 포함)를 사용하고 표준화 된 주소에는 쉼표가 없는지 확인해야합니다 (USPS Publication 28에 따름).
최근에 LiveAddress 라는 API 작업을 도왔습니다 . 지오 코딩 및 단일 행 주소 구문 분석을 지원하도록 방금 업그레이드되었습니다.
GeoPy는 구성 요소를 구문 분석하지 않고 지오 코딩하도록 설계되었습니다 (이 작업은 실제로 여기에 들어 가지 않는 이유로 어렵습니다). 그러나 LiveAddress 는 주소를 구성하고 주소에 대한 좌표 및 기타 정보를 주소가 실제 주소 인 경우에만 반환합니다. "추측 된"결과가 없습니다.
Python을 사용하여 단일 행 주소를 구성 요소로 구문 분석하려면 전체 주소를 "street"필드에 넣으십시오.
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이 결합되어 있으므로 필요한 경우 수동으로 연결할 필요가 없습니다.