오늘은 python에서 국가 정보를 사용할 수 있도록 도와주는 pycountry library에 대해서 알아보도록 하자.
나는 프로젝트 진행을 위한 전처리 과정에 국가정보가 필요해서 사용하게 되었다. 라이브러리에 fuzzy search 코드가 있어서 매우매우 행복하다..!
Install
라이선스는 LGPL-2.1 license이다.
https://pypi.org/project/pycountry/
Repository
가장 정확한 정보는 레포지토리와 document를 참고하는것이다 :)
https://github.com/pycountry/pycountry
소개
pycountry는 ISO 국가 데이터(국가명, 공식 국가명, ISO 코드 alpha2/3, flag, numeric code)를 조회할 수 있도록 작성된 라이브러리이다.
깃헙 레포지토리의 database폴더를 확인하면, 국가 정보와 subdivision 정보가 json으로 저장되어있는것을 확인할 수 있다.
깃헙 레포지토리의 리드미를 참고하여 소개해보자면
데이터베이스의 각 파일은 다음에 대한 데이터이다.
- 15924 : 스크립트
- 3166 : 국가와 subdivision data
- 3166-1 : 국가
- 3166-2 : subdivisions of countries
- 3166-3 : deleted countries. 즉, 이전에 존재했던 국가 데이터
- 4217: 국가 통화
- 639: 언어
사용예시 (country)
언어, 국가 통화, deleted country에 대한 부분을 제외한, 국가에 대한 pycountry 사용 예시를 간단하게 보이자면 다음과 같다.
- 더 많은 정보를 원한다면 위의 레포지토리로..!
일단 pycountry를 설치하고 import 한다.
countries.get()
country객체를 얻는 countries.get()을 사용해보자.
예시로 한국의 국가 객체를 얻어보겠다.
참고로 한국에 대한 데이터는 다음처럼 생겼다.
다음처럼 사용할 수 있다.
여기서 알 수 있는 한가지 큰 문제가 있다.
정확한 key 값과 value값을 알아야만 객체를 얻을 수 있다는것이다.
countries.search_fuzzy()
fuzzy search 기능이 다행스럽게도 존재하기 때문에, 아주 정확한 국가 정보를 알지 못하더라도 대략적으로 검색이 가능하다.
fuzzy search는 내부에서 유니코드 악센트를 normalizing하기 때문에 정확하게 정보를 입력하지 않아도 검색이 가능하고, 정확한 데이터가 위로 오도록 자동 정렬되어 반환된다.
이번에는 한국에 대해서 fuzzy_search를 사용해본다.
검색 결과는 객체의 리스트 형태로 출력된다.
남북한이 모두 검색되어 나온 것을 알 수 있다.
수도인 서울과 광역시/도, 세종으로 한국 검색도 가능하다!
참고로 지역 정보는 subdivision정보는 3166-2 json 파일에 다음처럼 저장되어있다.