'한글'에 해당되는 글 3건

  1. String option - u와 r
  2. 한글 in the dictionary (feat. pretty)
  3. Python 2.x 한글 인코딩

String option - u와 r

String option - u와 r

http://stackoverflow.com/questions/2081640/what-exactly-do-u-and-r-string-flags-do-in-python-and-what-are-raw-string-l

그냥 str : 8-bits ascii
u : unicode
r : raw string

r은 escape character로 사용되는 백슬래쉬 \를 문자 그대로 쓰일 수 있게 해준다.
ur도 사용할 수 있는데, 마찬가지로 유니코드에서 \를 문자 그대로 쓸 수 있게 해줌.

Test

>>> s1 = "안녕\n방가"
>>> s2 = r"안녕\n방가"
>>> s3 = u"안녕\n방가"
>>> s4 = ur"안녕\n방가"
>>> s1
'\xec\x95\x88\xeb\x85\x95\n\xeb\xb0\xa9\xea\xb0\x80'
>>> s2
'\xec\x95\x88\xeb\x85\x95\\n\xeb\xb0\xa9\xea\xb0\x80'
>>> s3
u'\uc548\ub155\n\ubc29\uac00'
>>> s4
u'\uc548\ub155\\n\ubc29\uac00'

네 문자열은 전부 다르다. 찬찬히 살펴보면 그 차이를 알 수 있다.

'Python' 카테고리의 다른 글

decorator (2) - extension  (0) 2014.10.06
decorator와 closure  (2) 2014.10.04
String option - u와 r  (0) 2014.09.21
한글 in the dictionary (feat. pretty)  (0) 2014.09.17
Python 2.x 한글 인코딩  (0) 2014.09.10
다양한 Python들!  (2) 2014.08.19

한글 in the dictionary (feat. pretty)

한글 in the dictionary (feat. pretty)

파이썬 2에서는 항상 한글이 문제다. 파이썬 3에선 괜찮다는데…
json, 즉 딕셔너리에 한글을 담아서 찍으면 유니코드로 나온다.

>>> dic = dict()
>>> dic['key'] = "한글"
>>> print dic
{'key': '\xed\x95\x9c\xea\xb8\x80'}

읽을 수 있게 찍어보자

딕셔너리 오브젝트의 value를 직접 찍어주면 잘 나온다.

>>> print dic['key']
한글

근데 항상 이렇게 찍을 순 없지 않은가!

딕셔너리를 통째로 읽을 수 있게 찍어보자.

>>> import json
>>> print json.dumps(dic, ensure_ascii=False)
{"key": "한글"}

성공!

예쁘게 찍어보자

위에서는 key가 하나였기에 문제가 없었지만 많아지면 보기 힘들어진다.

>>> dic['k1'] = "k1"
>>> dic['k2'] = "k2"
>>> dic['k3'] = "k3"
>>> print json.dumps(dic, ensure_ascii=False)
{"k3": "k3", "k2": "k2", "k1": "k1", "key": "한글"}

으악!!!

pprint를 쓸 수도 있지만, 어차피 file wirte할 일도 있고 json에서 바로 예쁘게 찍을 수 있다.

>>> print json.dumps(dic, ensure_ascii=False, indent=4)
{
    "k3": "k3",
    "k2": "k2",
    "k1": "k1",
    "key": "한글"
}

olleh!

json에서는 키 소팅 등 다양한 기능을 지원하니 필요하면 알아보도록 하자.

참고
https://docs.python.org/2/library/json.html

'Python' 카테고리의 다른 글

decorator와 closure  (2) 2014.10.04
String option - u와 r  (0) 2014.09.21
한글 in the dictionary (feat. pretty)  (0) 2014.09.17
Python 2.x 한글 인코딩  (0) 2014.09.10
다양한 Python들!  (2) 2014.08.19
pyenv와 virtualenv를 통한 파이썬 개발 환경 구축  (0) 2014.08.13

Python 2.x 한글 인코딩

파이썬 2는 아스키가 디폴트다. 그래서 한글이 골치아픔. 파이썬 3은 유니코드가 디폴트.

일단 코드 내에서 한글을 쓰려면 그것부터 에러가 난다. 심지어 주석조차도 에러가 남. 유니코드로 바꿔 주자.

#coding: utf-8

근데 이건 스크립트에서 한글을 쓸 수 있게 해 주는 것 뿐이다. 즉 스크립트를 유니코드로 작성하는 것. 이것만 해 주면 라이브러리를 가져다 쓴다거나 함수를 사용할 때 문제가 생긴다. file write시에도 문제가 있었다. sys.setdefaultencoding을 사용하자.

#coding: utf-8

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

s = '한글'
print str(unicode(s))


Python 2.x 한글 인코딩 관련 정리
여기에 정리가 잘 되어 있다. 참고하자.

'Python' 카테고리의 다른 글

decorator와 closure  (2) 2014.10.04
String option - u와 r  (0) 2014.09.21
한글 in the dictionary (feat. pretty)  (0) 2014.09.17
Python 2.x 한글 인코딩  (0) 2014.09.10
다양한 Python들!  (2) 2014.08.19
pyenv와 virtualenv를 통한 파이썬 개발 환경 구축  (0) 2014.08.13