Day 16 (23.08.07)
드디어 파이썬 프로젝트의 주가 시작되었다. 부트캠프 계획에 있는 6개의 Main 프로젝트 중에서 첫번째의 시작이다.
프로젝트의 내용은 그 동안 배운 것을 바탕으로 음성인식 프로그램을 만드는 것이었다. LM님의 말씀대로 그 간 배운 것들(특히 api와 모듈들)을 잘 복습했다면 제법 수월하게 완수할 수 있는 프로젝트 였다.
프로그램 작성에 요구되는 필수 사항들이 있었는데 이는 STT, TTS API를 반드시 이용하고 이외 프로그램 구성에 지정된 API(미세먼지 데이터를 가져오는데 공공데이터 포털을 이용하거나 등등...)를 이용하여 빌드를 해야했다. 완전히 배운 것과 똑같지는 않았지만 배운 것을 토대로 제대로 이해했을시 응용하여 솔루션을 도출할 수 있었다.
프로젝트를하며 기본적인 문자열의 슬라이싱 혹은 인덱싱, 그리고 내장함수들이 요구되었고, 리스트 등의 개념을 확실히 알고 있어야 구현하는데 지장이 없었다. 나름 다시 한 번 베이스를 단단히 한다는 느낌으로 열심히 임했다.
프로그램 구현시 러프하게 전체적인 구성을 빌드하고 리팩토링 과정을 거치며 디테일을 추가하는 방식으로 진행하였다. 아예 빌드되기 전인 모듈과 함수들을 Main 페이지에 있는 것처럼 작성하였고 그 이후에 필요한 함수, 모듈을 순차적으로 구현하는 방향으로 하였다. 좋은 점이 미리 전체적인 플로우가 잡히다 보니 헤매지 않고 안정적으로 프로그램 빌드를 할 수 있었다.
수업에서는 배우지 않은 몇가지 새로운 것들을 추가하였다.
첫 번째는 나라별 위도, 경도를 크롤링 하는 과정에서
'England (51.51°E -0.13°N25m asl)' 와 같이 텍스트가 리턴되는데 여기서 위도와 경도만 추출하는 과정을 용이하게 하기 위해서 정규표현식을 사용하는 "re" 모듈을 추가하였다. 아래와 같은 과정으로 쉽게 추출할 수 있었다.
import re
text = 'England (51.51°E -0.13°N25m asl)'
text1 = re.findall('-?\d+.\d+',text)
print(text1)
>>> ['51.51', '-0.13']
정규표현식 '-?\d+.\d+'의 뜻은 '-'를 포함하거나 포함하지 않은 <숫자 + '.' + 숫자> 형태를 만족하는 모든 문자를 추출하게하는 re 모듈의 findall 메서드가 적용된다.
두 번째는 구글의 번역 모듈인 Googletrans 모듈을 사용하였다.
위와 마찬가지인 위도, 경도를 크롤링하는 과정에서 음성입력으로 위도, 경도 데이터를 원하는 나라를 말해야 하는데 해당 크롤링 사이트에서는 한글 입력시 인식하지 못하는 문제가 있었다. 하지만 음성입력은 한글 기반으로 인식하니 이 때 중간에서 한글 to 영어로 바꿔줄 필요가 있었다. 이에 나는 파이썬의 최대 장점인 모듈 확장성을 믿었고 역시나 구글의 오픈소스 번역 모듈이 존재했다. 아래는 사용예시이다.
pip install googletrans==4.0.0rc1
from googletrans import Translator
text = '런던'
translator = Translator()
translated = translator.translate(text, dest='en')
print(translated.text)
>>> London
이렇게 집중하며 빌드하다보니 하루 동안 필수 요구 사항은 모두 빌드하였다. 추가적으로 리팩토링을 통해서 Main 페이지의 내용을 모듈들로 분리하여 Main 페이지의 코드를 심플하게 줄여 나갔다. 이를 끝으로 오늘 하루의 프로젝트 진행은 끝마쳤다.
나머지는 선택사항에 대한 빌드인데 앞으로 프로젝트 기간 동안 빌드해 나갈 것 같다.
TIL