Search Results for 'unicodedata'

2 POSTS

  1. 2015.12.03 한글의 자모 분리
  2. 2014.10.21 python2.x에서 unicodedata 사용법

한글의 자모 분리

Posted 2015. 12. 3. 15:05

입력된 문자가 음절인지 확인하고, check_ch_type()

음절인 경우 conv_jaso를 통해 자모 분해 & compatibility_jamo로 변환


import unicodedata


def check_ch_type(ch):

    valid_type = ['Lo']

    if unicodedata.category(ch) in valid_type:

        unicode_names = unicodedata.name(ch).split()

        if 'HANGUL' in unicode_names and 'SYLLABLE' in unicode_names:

            return True

        else:

            return False

    else:

        return False


def conv_jaso(ch=u'각'):


    def conv_compatibility_jamo(ch):

        unicode_names = unicodedata.name(ch)

        # print ch, unicode_names

        if unicode_names.find('CHOSEONG') >= 0:

            unicode_names = unicode_names.replace('CHOSEONG', 'LETTER')

        elif unicode_names.find('JUNGSEONG') >= 0:

            unicode_names = unicode_names.replace('JUNGSEONG', 'LETTER')

        elif unicode_names.find('JONGSEONG') >= 0:

            unicode_names = unicode_names.replace('JONGSEONG', 'LETTER')

        return unicodedata.lookup(unicode_names)


    jaso = []

    ch = ord(ch) - 0xAC00

    jong = ch % 28

    jung = ((ch - jong) / 28) % 21

    cho = (((ch - jong) / 28) - jung) / 21

    # print 'cho :', cho, (unichr(cho + 0x1100)).encode('utf-8')

    # print 'jung :', jung, (unichr(jung + 0x1161)).encode('utf-8')

    # print 'jong :', jong, (unichr(jong + 0x11A7)).encode('utf-8')

    if cho >= 0:

        jaso.append(conv_compatibility_jamo(unichr(cho + 0x1100)))

    if jung >= 0:

        jaso.append(conv_compatibility_jamo(unichr(jung + 0x1161)))

    if jong > 0:

        jaso.append(conv_compatibility_jamo(unichr(jong + 0x11A7)))

    return ''.join(jaso)

'Computer > Python' 카테고리의 다른 글

한글의 자모 분리  (0) 2015.12.03
inline if  (0) 2015.03.11
파이썬 json.dumps를 한글에 사용하는 방법  (0) 2015.02.01
nested list comprehesion in python  (0) 2015.01.10
python OrderedDict  (0) 2014.12.04
파이썬 표준 에러(stderr) 출력  (0) 2014.11.21
Write your message and submit

python2.x에서 unicodedata 사용법

Posted 2014. 10. 21. 11:03

파이썬(python)을 이용하여, 한글을 처리할 때 여러가지 방법이 있겠지만,

다음과 같이 unicodedata라는 클래스를 이용하면 좀 더 편리하게 처리할 수 있다.


unicodedata documenation : https://docs.python.org/2/library/unicodedata.html

unicode type category(5.5.1 General Category Values) : http://www.unicode.org/reports/tr44/tr44-4.html


각 unicode에 대해 어떤 category을 갖는지 확인해서 제거할 수 있으며, 한글의 경우에는 Lo(other characters)에 속한다.


아래 코드는 utf-8 문자열을 입력받아, unicode로 변환한 뒤, 문자열을 돌면서, valid_type만 추출하는 예제이다.

+ Lo 타입에 속하는 한글을 확실하게 구별할 수 있는 방법을 추가한다.

'Computer > Python' 카테고리의 다른 글

inline if  (0) 2015.03.11
파이썬 json.dumps를 한글에 사용하는 방법  (0) 2015.02.01
nested list comprehesion in python  (0) 2015.01.10
python OrderedDict  (0) 2014.12.04
파이썬 표준 에러(stderr) 출력  (0) 2014.11.21
python2.x에서 unicodedata 사용법  (0) 2014.10.21
Write your message and submit