해외수주관련 데이터를 정리 중 수주금액이 현지통화로만 표현되는 테이블을 발견하였다
달러나 엔정도면 다른 파일에서 참조할 정도였지만, 이 테이블은 환종이 한두개가 아니었다
이 난장을 정리하기 위하여 무료공개중인 환율 api를 불러와 파이썬을 통하여 엑셀 테이블로 저장하는 법을 정리하였다.
사용하는 라이브러리는 pandas, json, request이다
먼저 라이브러리와 환율 api주소를 요청한다.
이후 요청한 api를 text로 저장
import pandas as pd
import json
import requests
url = 'http://fx.kebhana.com/FER1101M.web'
response = requests.get(url)
text = response.text
text의 탭이나 각종 특수문자도 딸려오는 관계로 전처리를 수행
#특문 전처리
ch_l=['\n','\t','\r']
for i in range(0,len(ch_l)):
text=text.replace(ch_l[i],'')
json 문서의 앞뒤에 더러운 것들도 제거해주자
#텍스트 쪼개기
text = text.lstrip("var exView ='")
split_data = text.split(",\"리스트\":")
중간에 api를 불러온 시간을 파일명으로 설정해 주기위해 따로 변수저장을 해둔다
그 다음 나머지 부분을 json포맷에 맞게 만들어준다
#파일명만들기
bsda=split_data[0].split('날짜\": "')[1].rstrip("\"").replace(":","")
bsda = bsda + " 환율.xlsx"
#쪼갠부분 틀 채우기
fx_text = split_data[1].replace(",]}","]")
print(fx_text)
이제 이 텍스트를 json으로 불러올 것이다
pandas에서 json을 테이블 형태로 간단하게 바꿔주는
"json_normalize"기능이 있기 때문
#json파일 만들기
fx_json=json.loads(fx_text)
#table 작성
jsn = pd.json_normalize(fx_json)
#jsn
#파일저장
jsn.to_excel(bsda)
이렇게 하면 요청한 시간의 각국가의 환율을 통해 원으로 환산할 수 있게된다