pprint : 쉽고 예쁘게 출력하기

문자열에 포함된 format 함수를 사용하면
일반적으로 가장 보기 좋은 출력 형태를 생성할 수 있다.
그런데, format 함수는 전달해야 할 것이 많아서 번거로운 느낌이 들 때가 많다.
이럴 때 조금 부족하기는 하지만,
pprint 모듈을 사용하면 상당 부분 절충하는 것이 가능하다.
pprint 모듈을 정리하면서 개인적으로 사용하던 unpack 문법을 함께 정리했다.

리스트와 딕셔너리에서 요소가 많을 경우
한 줄로 출력하는 것은 읽기가 힘들어서 의미 없는 경우가 많다.
핵심은 각각의 요소를 다른 줄에 출력하는 것이다.
리스트와 딕셔너리에 대한 예제를 각각 정리했다.


첫 번째는 리스트를 간결하게 출력하는 코드이다. 출력 결과는 코드 바로 아래 실어 두었다.

import pprint

numbers = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
print(numbers)
print(*numbers)
print(*numbers, sep='\n')

# 출력 결과
# [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
# [1, 2, 3] [4, 5] [6, 7, 8, 9]
# [1, 2, 3]
# [4, 5]
# [6, 7, 8, 9]

print('-'*50)

print('** pprint **')
pprint.pprint(numbers)
pprint.pprint(numbers, width=20)
pprint.pprint(numbers, width=20, indent=4)

# 출력 결과
# [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
# [[1, 2, 3],
# [4, 5],
# [6, 7, 8, 9]]
# [ [1, 2, 3],
# [4, 5],
# [6, 7, 8, 9]]

print('** pprint.PrettyPrinter **')
pp = pprint.PrettyPrinter(width=20, indent=4)
pp.pprint(numbers)

# 출력 결과
# [ [1, 2, 3],
# [4, 5],
# [6, 7, 8, 9]]


두 번째는 딕셔너리를 출력하는 코드이다.

import pprint

info = dict(name='kim', age=20, addr='yongin')

print(info)
print(*info)

# 출력 결과
# {'addr': 'yongin', 'age': 20, 'name': 'kim'}
# addr age name

print('-'*50)

print([k for k in info])
print([(k, info[k]) for k in info])
print(*[(k, info[k]) for k in info])

# 출력 결과
# ['addr', 'age', 'name']
# [('addr', 'yongin'), ('age', 20), ('name', 'kim')]
# ('addr', 'yongin') ('age', 20) ('name', 'kim')

print('-'*50)

print(*[(k, info[k]) for k in info], sep='\n')
print(*['{}: {}'.format(k, v) for k, v in info.items()], sep='\n')

# 출력 결과
# ('addr', 'yongin')
# ('age', 20)
# ('name', 'kim')
# addr: yongin
# age: 20
# name: kim

print('-'*50)

print('** pprint **')
pprint.pprint(info)
pprint.pprint(info, width=20)
pprint.pprint(info, width=20, indent=4)

# 출력 결과
# {'addr': 'yongin', 'age': 20, 'name': 'kim'}
# {'addr': 'yongin',
# 'age': 20,
# 'name': 'kim'}
# { 'addr': 'yongin',
# 'age': 20,
# 'name': 'kim'}

print('** pprint.PrettyPrinter **')
pp = pprint.PrettyPrinter(width=20, indent=4)
pp.pprint(info)

# 출력 결과
# { 'addr': 'yongin',
# 'age': 20,
# 'name': 'kim'}

'파이썬' 카테고리의 다른 글

줄 바꿈 없이 계속 출력  (0) 2017.04.19
numba - 성능 업!  (0) 2017.04.18
enum 클래스  (0) 2017.04.09
구조체로 사용할 수 있는 collections.namedtuple  (0) 2017.04.09
defaultdict 사용법  (0) 2017.04.06