반응형
회사에서 다국어를 지원하다보니 베트남어 인풋을 받아 처리를 해야 하는 문제가 생겼다. 고객이 베트남인일 때 알파벳을 입력하는 것은 어려워하지만 베트남어 키보드로 이름을 치는 건 쉽게 할 수 있는데, 문제는 우리가 베트남어를 받아서 영문 알파벳으로 변환을 하여 협력사에 알파벳 이름을 전달해야 한다.
예를 들어, 한 고객의 이름이 Nguyễn Vũ Quốc Anh 이라고 했을 때, 이 이름을 Nguyen Vu Quoc Anh 으로 변환해야 한다. 문제 해결을 위해 베트남어에 사용되는 전체 문자열을 나열하고, 그에 대응하는 알파벳으로 치환해주는 간단한 함수를 구현한다.
def remove_accents(input):
if not input:
return ""
s1 = u'ÀÁÂÃÈÉÊÌÍÒÓÔÕÙÚÝàáâãèéêìíòóôõùúýĂăĐđĨĩŨũƠơƯưẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặẸẹẺẻẼẽẾếỀềỂểỄễỆệỈỉỊịỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợỤụỦủỨứỪừỬửỮữỰựỲỳỴỵỶỷỸỹ'
s0 = u'AAAAEEEIIOOOOUUYaaaaeeeiioooouuyAaDdIiUuOoUuAaAaAaAaAaAaAaAaAaAaAaAaEeEeEeEeEeEeEeEeIiIiOoOoOoOoOoOoOoOoOoOoOoOoUuUuUuUuUuUuUuYyYyYyYy'
s = "".join([s0[s1.index(c)] if c in s1 else c for c in input]) # s1 -> s0 로 변환하여 리턴할 결과 문자열
return s
input 을 한 글자씩 순차조회 하며, 일반 알파벳이 아닌 경우에는 s1의 동일 위치에 있는 s0의 알파벳을 가져오는 코드이다. 결과는 어레이 이므로 join 함수를 통해 다시 string으로 만들어 주면 완료.
반응형
'개발 이야기 > Python' 카테고리의 다른 글
Python 이중 for loop 를 itertools 를 활용하여 개선하기 (0) | 2024.02.26 |
---|---|
gunicorn 멀티프로세스 Crontab 을 활용한 날짜별 file log 로테이션 돌리기 (0) | 2023.04.25 |
Multi Thread 결과 값 리턴하여 저장하기 (0) | 2021.07.22 |
Fabric 을 이용하여 쉽고 편한 배포하기 (0) | 2020.12.10 |
Dictionary List 를 key에 따라 sort 하기 (0) | 2020.12.02 |
댓글