728x90
파이썬에서 한글을 다루다 보면, 인코딩에 대한 이슈를 그냥 지나칠 수 없다. 파이썬의 장점은 methods의 입력 데이터 형식을 지정하지 않아도 된다는 것이다.
C/C++에 익숙했던 분들은 아주 생소하게 느껴질 수 있는 부분이다.
가령 덧셈 함수를 만든다고 하면,
def sum(a,b): return a+b
로 간단하게 할 수 있다. 여기서 a, b는 정수, 실수 모두 가능하게 된다.
하지만, a와 b가 리스트list 또는 사전dict 형태의 데이터라면 어떻게 처리해야 할까?
리스트 형식의 데이터라면, 각 i 번째 element끼리 더해서 결과를 반환하도록 하면되고,
사전 형식의 데이터라면, 같은 key 값을 갖는 데이터끼리 더해서 결과를 반환하도록 하면 될 것이다.
이제 원래 이슈로 돌아가서, 입력 데이터가 string, list, dict 중 어느 것이 든지 상관없이 데이터 값을 unicode로 변환하는 프로그램을 만들어 보자.
instance라는 함수를 통해서, 데이터가 string의 instance인지,
아니면, mutable sequence (i.e. list)의 instance인지,
아니면 mutable mapping (i.e. dict)의 instance인지.. 판단할 수 있다.
from collections import MutableMapping from collections import MutableSequence def convert_to_unicode(data, encoding='utf-8'): if isinstance(data, basestring): if not isinstance(data, unicode): return unicode(data, encoding) else: return data.encode(encoding) elif isinstance(data, MutableSequence): # list-like object unidata = list() for item in data: unidataList = convert_to_unicode(item) unidata.append(unidataList) return unidata elif isinstance(data, MutableMapping): # dict-like object unidata = dict() for key, value in data.items(): unidata.update([(key, convert_to_unicode(value))]) return unidata else: return data
728x90
'데이터과학 > 데이터 분석 실습' 카테고리의 다른 글
Data Analysis (2): Linear Model in MATLAB (0) | 2014.01.27 |
---|---|
Data Analysis (1): Neuroimaging Data loading using SPM8 toolbox (11) | 2014.01.26 |
맥미니 몽고디비 분산 시스템 (5) - Aggregate (0) | 2013.07.20 |
맥미니 몽고디비 분산 시스템 (4) - Replica Set (3) | 2013.07.20 |
맥미니 몽고디비 분산 시스템 (3) - Sharding (0) | 2013.07.20 |