파이문

[Python] 리스트, 딕셔너리 한글 print 본문

트러블 슈팅

[Python] 리스트, 딕셔너리 한글 print

민Z 2016. 3. 27. 14:13

(Python에서 dictionary, list 의 print 형식 바꾸기)


파이썬에서 유니코드가 아닌 한글 문자열은 /x~ 형식으로 표기된다. 일반 문자열을 print할 때는 상관 없지만 딕셔너리나, 리스트 안의 인자 값으로 들어가는 경우엔 print를 해도 한글이 제대로 보이지 않는다.


즉, 다음과 같은 상황인 것이다.


리스트 안의 문자열에서 인덱스 접근으로 하면 제대로 "가" "나"가 콘솔창에 찍히지만, 단순히 리스트를 print 할 경우에는 나타나지 않는다.

딕셔너리도 마찬가지다.


이럴 경우엔 cumstom 클래스로 리스트와 딕셔너리를 만들고 각각의 컬렉션을 상속 받아 __str__을 오버라이드 해주면 된다.

즉, 다음 처럼 새롭게 만들어준다.

class MyList(list):
   def __str__(self):
       return "[" + ", ".join(["%s" % x for x in self]) + "]"


class MyDict(dict):
   def __str__(self):
       return "{" + ",".join(["%s: %s" % (key, self[key]) for key in self]) + "}"


mydict = MyDict()

mydict["1"] = "추신수"
mydict["2"] = "류현진"

mylist = MyList()
mylist.append(mydict)

print mydict
print mylist

결과 값으로 제대로 한글이 나오는 것을 볼 수 있을 것이다.





Comments