본문 바로가기

Python

http://openflights.org/의 airlines.dat을 json으로 변환하기

http://openflights.org/data.html#airport

위의 사이트에는 airports.dat 링크가 있습니다.

여기에는 공항정보가 나열되어 있습니다.

공항 정보 중에서 공항코드와 Time zone 정보가 필요하여 json 형태로 작업이 필요하게 되었습니다.

아래의 단계를 거쳐서 json 문자열을 만들어냈습니다.

1. 헤더 넣기

import json
import httplib
import csv

2. http request 보내기

conn = httplib.HTTPSConnection('raw.githubusercontent.com')
conn.request("GET", '/jpatokal/openflights/master/data/airports.dat')

3. http response 받기

csvfile = conn.getresponse().read().split('\n')

4. 라인별 처리 후 json으로 저장

reader = csv.reader(csvfile)
infos = []
for row in reader:
if row:
dic = {}
logging.error(row)
airport_id, name, city, country, iata, icao, latitude, longitude, altitude, timeoffset, dst, timezone = row
dic['airportId'] = airport_id
dic['city'] = city
dic['country'] = country
dic['iata'] = iata
dic['icao'] = icao
dic['latitude'] = latitude
dic['longitude'] = longitude
dic['altitude'] = altitude
dic['timeOffset'] = timeoffset
dic['dst'] = dst
dic['timezone'] = timezone
infos.append(dic)

5. json 문자열로 변경

jsonStr = json.JSONEncoder().encode(infos)

6. 전체 소스

import json
import httplib
import csv
def get_airportinfo():
conn = httplib.HTTPSConnection('raw.githubusercontent.com')
conn.request("GET", '/jpatokal/openflights/master/data/airports.dat')
csvfile = conn.getresponse().read().split('\n')
reader = csv.reader(csvfile)
infos = []
for row in reader:
if row:
dic = {}
logging.error(row)
airport_id, name, city, country, iata, icao, latitude, longitude, altitude, timeoffset, dst, timezone = row
dic['airportId'] = airport_id
dic['city'] = city
dic['country'] = country
dic['iata'] = iata
dic['icao'] = icao
dic['latitude'] = latitude
dic['longitude'] = longitude
dic['altitude'] = altitude
dic['timeOffset'] = timeoffset
dic['dst'] = dst
dic['timezone'] = timezone
infos.append(dic)

jsonStr = json.JSONEncoder().encode(infos)
return jsonStr


반응형

'Python' 카테고리의 다른 글

pytz 데이터 업데이트하는 방법  (0) 2015.10.06