http://dream.ahboom.net/entry/한글-유니코드-자소-분리-방법 에 대한 파이썬 구현입니다.
>>> korean_to_code('파이썬')
'vkdlTjs'
http://dream.ahboom.net/entry/한글-유니코드-자소-분리-방법 에 대한 파이썬 구현입니다.
>>> korean_to_code('파이썬')
'vkdlTjs'
BASE_CODE, CHOSUNG, JUNGSUNG = 0xac00, 0x024c, 0x1c | |
CHOSUNG_LIST = ('r', 'R', 's', 'e', 'E', 'f', 'a', 'q', 'Q', 't', 'T', 'd', | |
'w', 'W', 'c', 'z', 'x', 'v', 'g') | |
JUNGSUNG_LIST = ('k', 'o', 'i', 'O', 'j', 'p', 'u', 'P', 'h', 'hk', 'ho', | |
'hl', 'y', 'n', 'nj', 'np', 'nl', 'b', 'm', 'ml', 'l') | |
JONGSUNG_LIST = (' ', 'r', 'R', 'rt', 's', 'sw', 'sg', 'e', 'f', 'fr', 'fa', | |
'fq', 'ft', 'fx', 'fv', 'fg', 'a', 'q', 'qt', 't', 'T', 'd', | |
'w', 'c', 'z', 'x', 'v', 'g') | |
def korean_to_code(keyword): | |
ch_list = [] | |
for ch in keyword: | |
ch_code = ord(ch) - BASE_CODE | |
idx1 = ch_code // CHOSUNG | |
idx2 = (ch_code - (CHOSUNG * idx1)) // JUNGSUNG | |
idx3 = ch_code - (CHOSUNG * idx1) - (JUNGSUNG * idx2) | |
ch_list.append(CHOSUNG_LIST[idx1] + JUNGSUNG_LIST[idx2] + \ | |
JONGSUNG_LIST[idx3].strip()) | |
return ''.join(ch_list) |