|파이썬으로 엑셀 파일 번역을 만들게 된 이유
회사 업무를 하다 보면 영문 데이터를 엑셀로 다운로드한 후 빠른 해석을 위해 사내 번역기를 사용한다.
다만 사내 프로그램은 용량의 제한이 있고, 속도가 느려서 직접 파이썬으로 만들어보았다.
|초기 설정
1. 번역에 사용할 라이브러리는 구글이 제공하는 'googletrans' 이다.
따라서 라이브러리를 설치해주자.
pip install googletrans
사용 환경에 따라 설치 실패할 수가 있는데, googletrans의 버전을 선택해서 다운로드해야 한다고 한다.
참고해서 버전을 기입하여 다운로드 하자.
나의 경우 'NoneType' 에러가 발생해서 3.1.0으로 다운로드를 해주었다.
#위 버전으로 에러 날 시 아래와 같이 설치
pip install googletrans==3.1.0a0
2. 엑셀을 사용하기 위해 openpyxl 라이브러리를 사용할 것이다. 위와 동일하게 설치해주면 된다.
pip install openpyxl
3. 나는 특정 경로의 파일을 번역하는 것이 아닌, 그때마다 해당 파일을 선택해주고자 한다.
따라서 tkinter로 경로를 잡아줄 것이다. 그러니 설치해주자.
pip install tkinter
|엑셀 번역을 위한 코드 구성
이제 본격적으로 코드를 짜 보자.
일단 나는 전문가가 아니기 때문에, 나의 의식에 흐름대로 구현했다.
정말 잘 짠 코드 구성이라고는 할 수 없기 때문에 참고만 하길 바람.
먼저 사용할 라이브러리를 호출하고, 결과적으로 저장할 엑셀까지 정의해주자.
from googletrans import Translator
from tkinter import filedialog
from tkinter import messagebox
from openpyxl import load_workbook
from openpyxl import Workbook
import datetime #파일명에 날짜 적어주기 위해 사용
#번역기능
translator = Translator()
#내가 번역에 원하는 파일 선택, 확장자도 정의 해주기
files = filedialog.askopenfilename(title = "파일을 선택 해 주세요",\
filetypes = (("*.xlsx","*xlsx"),("*.xls","*xls"),("*.csv","*csv")))
#만약에 파일이 선택되지 않을 경우 오류를 띄어줌
if files == '':
messagebox.showwarning("경고!", "파일이 선택되지 않았습니다.")
#openpyxl의 load workbook으로 번역할 파일 생성
load_wb = load_workbook(files, data_only=True)
ws = load_wb.active
#openpyxl의 workbook으로 결과 파일을 생성
result_wb = Workbook()
result_ws = result_wb.active
▲주석으로 다 표현은 해놓았다. 한번 더 말하자면, 나는 의식에 흐름대로 구현하다 보니 참고만 하자.
먼저 datetime을 가져온 이유는 파일명에 날짜와 시간을 표기해주기 위함이다.
이걸 표기하는 이유는 번역할 때마다 이름 정하기도 귀찮고, 구분을 해줘야 하기 때문이다.
파일이 선택되지 않았을 때 진행되지 않도록 메시지도 띄어주자.
나는 엑셀에 있는 모든 셀의 문자를 한글로 바꿔주는 걸 구현할 것이다.
특정 부분만 발췌하여 그 부분만 해석하게 하는 건.. 실질적으로 사용할 때 큰 도움이 안 될 것 같았다.
이제 번역되는 부분을 작성하자.
# 행과 열 갯수 확인함.
row = ws.max_row
col = ws.max_column
# for 문을 이용해 모든 행과 열을 다 번역
for j in range(col):
for i in range(row):
result = translator.translate(ws.cell(i + 1, j + 1).value, dest='ko')
result_ws.cell(i + 1, j + 1).value = result.text
#오늘 날짜를 가져와서 파일명으로 만들어줌.
today = datetime.datetime.now()
today_md = today.strftime("%y%m%d") + '_' \
+ today.strftime("%H%M") + '_번역결과'
#내가 원하는 경로에 저장 시켜줄 것 임.
save_dir = filedialog.askdirectory()
final_dir = save_dir + '/' + today_md + '.xlsx'
result_wb.save(final_dir)
▲for문을 이용해서 단순하게 모든 셀을 가져와 모든셀을 번역하는 것으로 구현하였다.
그리고 datetime을 이용하여 파일명을 작성해주었다.
저장하는 것도 동일하게 내가 경로를 설정하여 저장하도록 fildialog로 작성하였다.
|후기, 결과
간단하게 코드를 구현해서 만들었는데 생각보다 잘 동작한다.
아래는 실제 작동한 화면이다.
1. 번역 전
2. 파일 선택
3. 번역 결과 저장 위치 선택
4. 번역 완료(저장된 모습)
번역이 아래와 같이 완료되었다.
끝!
'쓰면서 배우는 곳 > Python' 카테고리의 다른 글
[Python] map, strip() 사용, 서식 문자 알아보기 (0) | 2022.10.31 |
---|
댓글