contact 머드클럽 문의하기 카카오톡
즐겨찾기 추가plus 머드클럽이 새롭게 오픈하였습니다!
sub image
[기타]유니코드(utf-8) 한글 조사 처리
member photo 암로 0 1,314 0 2020-08-01 14:04:32

90년대 만들어진 머드들의 경우 한글 인코딩을 거의 대부분 EUC-KR을 썼으나

유니코드를 지원하는 머드에 맞게 짜여진 조사처리는 없어서 제가 쓴 방법을 공유합니다.

 

사용한 언어가 python이나 로직을 참고하는데는 어려움은 없으실 것이라 생각됩니다.

 

한글 단어의 마지막 글자가 받침이 있는 것과 없는 것의 차이를 확인하면 되는데,

utf-8형식의 바이트 코드를 문자열로 변환한후(python 3.x버전대는 변환 필요없음) 아스키 코드(ord)로 변환시킨 후 문자열의 마지막 글자([-1])의 값이

아스키 코드값을 28로 나눈 나머지가 16인지 아닌지 여부를 확인하면 됩니다.
나머지가 16이면 받침이 없는 것이고, 나머지는 받침이 있는 문자들 입니다. 

(한글 아스키코드 표 링크: http://www.hipenpal.com/tool/characters-to-unicode-charts-in-korean.php)

 

import sys


class _Josa:
    @classmethod
    def base(cls, word):
        if not word:
            return
        if sys.version[0] == '2':  # python2 일 때
            if 44032 <= ord(word.decode('utf-8')[-1]) <= 55203:
                if ord(word.decode('utf-8')[-1]) % 28 != 16:
                    return True
                return False
        else:  # python3
            if 44032 <= ord(word[-1]) <= 55203:
                if ord(word[-1]) % 28 != 16:
                    return True
                return False
        if word[-1] in ['2', '4', '5', '9']:
            return False
        if word[-2:] in ['ng']:
            return False
        if word[-1] in ['a', 'c', 'd', 'e', 'f', 'h', 'i', 'j', 'k', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']:
            return False
        return True

    @classmethod
    def eunNeun(cls, word):
        if cls.base(word):
            return '은'
        return '는'

    @classmethod
    def iGa(cls, word):
        if cls.base(word):
            return '이'
        return '가'

    @classmethod
    def eulReul(cls, word):
        if cls.base(word):
            return '을'
        return '를'

    @classmethod
    def euroRo(cls, word):
        if sys.version[0] == '2':
            if 44032 <= ord(word.decode('utf-8')[-1]) <= 55203:
                if ord(word.decode('utf-8')[-1]) % 28 != 16 and ord(word.decode('utf-8')[-1]) % 28 != 24:
                    return '으로'
                return '로'
        else:
            if 44032 <= ord(word[-1]) <= 55203:
                if ord(word[-1]) % 28 != 16 and ord(word[-1]) % 28 != 24:
                    return '으로'
                return '로'
        if word[-1] in ['1', '2', '4', '5', '7', '8', '9']:
            return '로'
        if word[-1] in ['a', 'c', 'd', 'e', 'f', 'h', 'i', 'j', 'k', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']:
            return '로'
        return '으로'

    @classmethod
    def kwaWa(cls, word):
        if cls.base(word):
            return '과'
        return '와'

    @classmethod
    def iRanRan(cls, word):
        if cls.base(word):
            return '이란'
        return '란'
0
0Comments
-표시할 내용이 없습니다.-
코멘트를 삭제할 비밀번호를 입력하세요.
비밀번호:
정회원 이상만 코멘트 쓰기가 가능합니다.
총 게시물 109개 / 검색된 게시물: 109개
글번호   제목 작성자 조회수 싫어요 작성일
  [기타]누구든지 머드 강의를 올리수 있는 곳입니다...^^ 머드클럽 4567 0 0 2003-12-31
109 thumbnail [hanlp] HanLP 쥬라기공원3를 윈도우에서 돌려봅시다 가짜으르릉 435 1 0 2025-01-23
108 [기타] UTF-8 한글 조사처리 (파이썬, c) 암로 166 0 0 2025-01-01
107 [circle] EUC-KR 및 UTF8 한글 처리 울보천사 402 0 0 2024-01-08
106 [기타] 유니코드(utf-8) 한글 조사 처리 암로 1315 0 0 2020-08-01
105 [hanlp] 지도소스 수정 [1] 오코 1472 1 0 2018-06-07
104 [기타] 머드 계보 [1] 암로 10552 0 0 2012-04-28
103 [mordor] 의형제 LostMemory 5384 0 0 2007-10-19
102 [mordor] 폭탄소스 LostMemory 5635 0 0 2007-10-19
101 [mordor] 패거리 등급 변경 LostMemory 6371 0 0 2007-10-19
100 [mordor] 날짜관리 LostMemory 4611 0 0 2007-10-19
99 [mordor] 마법 추가하기 LostMemory 5407 0 0 2007-10-19
98 [hanlp] 레벨 최대화 32767 LostMemory 5508 0 0 2007-10-19
97 [mordor] 분신이란 기술 LostMemory 4871 0 0 2007-10-19
96 [mordor] 연타 LostMemory 4509 0 0 2007-10-19
95 [mordor] 이자소스 LostMemory 5359 0 0 2007-10-19
94 [mordor] 편지를 아이템화 LostMemory 3724 0 0 2007-10-19
93 [mordor] 직업추가 LostMemory 3311 0 0 2007-10-19
92 [mordor] 패거리 상점 만들기 LostMemory 3302 0 0 2007-10-19
91 [기타] 단땅..프로그램은 멀로 하는거&#51440;.. 첨이라..^^ [1] 사마천 3839 0 0 2006-06-22
90 [circle] 오래된거지만.. 써클머드 화일들에 대한 간략한 설명.. [2] 머큐리 4350 0 0 2006-06-10
쪽지를 전송하고 있습니다. 잠시 기다려주세요.
쪽지보내기
받는이(ID/닉네임)
내용
쪽지가 도착하였습니다.
쪽지 내용을 읽어오고 있습니다. 잠시 기다려주세요.
--