2012년 12월 24일 월요일

[Python] 데이터를 예쁘게(?) 찍어주기

제목을 정확히 쓰자면 'Data Pretty Print' 이다. Python에 기본적으로 포함되어 있는 pprint 모듈에 대해 간단히 소개하고자 한다.

pprint는 말 그대로 Pretty Print 이긴 한데 이름 만으론 잘 감이 안 올 수도 있다. 이 모듈은 복잡한 자료구조의 내용을 조금 더 알기 쉽게 표시해 주는 역활이다.

단순한 예제를 들어보자.
>>> a = { 'result': True, 'records': [ { 'id': 1, 'value': 'First Value' }, { 'id': 2, 'value': 'Second Value' } ], 'count': 2 }
>>> a
{'count': 2, 'records': [{'id': 1, 'value': 'First Value'}, {'id': 2, 'value': 'Second Value'}], 'result': True}
파이썬 인터프리터 상에서 약간 복잡한 자료구조를 만들고 이 값의 내용을 확인하기 위해 그냥 찍어봤다. 이 예제의 코드는 길지 않아서 그냥 봐도 그럭저럭 이해되기에 좋은 예제는 아닌것 같지만, 만약 위의 내용이 엄청 길거가 더 복잡해지면 눈으로 확인하기에 좀 힘들다. (특히 요즘처럼 JSON으로 데이터를 주고 받을 때 파싱된 내용을 그대로 찍어보면 굉장하다 -_-)

이럴 때 pprint를 이용해 보면 좀 더 편하게 감상(?)이 가능하다.
>>> import pprint
>>> pprint.pprint(a)
{'count': 2,
 'records': [{'id': 1, 'value': 'First Value'},
             {'id': 2, 'value': 'Second Value'}],
 'result': True}
오오오! 위에서 한줄로 길게 찍힌 것에 비하면 가독성이 장난 아니다. 정말 예쁘게 표시해준다.

아마도 이 예제 하나면 쉽게 기능을 알 수 있을 것이다. 말 그대로 Pretty Print이다.

만약 디버깅용 로그를 남길 때 이 기능을 이용 할 수 있을까? 물론 된다. pprint 레퍼런스 문서를 찾아보면 쉽게 알 수 있다. 바로 pformat이다.
>>> l = pprint.pformat(a)
>>> l
"{'count': 2,\n 'records': [{'id': 1, 'value': 'First Value'},\n             {'id': 2, 'value': 'Second Value'}],\n 'result': True}"
pprint.pprint로 출력되던 내용을 문자열로 정리해서 리턴해준다. 이를 이용해 로그를 남기면 될 것이다.

댓글 없음 :