Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 pprint로 JSON 데이터 보기 좋게 출력하기

pprint란 무엇인가?

파이썬에는 print 메서드의 출력 결과를 깔끔하게 포맷팅해 주는 특별한 기능이 있는데, 이를 pretty print, 줄여서 pprint라고 부릅니다. 예를 들어 웹 URL에서 JSON 형식의 콘텐츠를 읽어올 때, 일반적인 print 함수를 사용하면 모든 내용이 한 줄로 길게 출력되어 읽고 이해하기가 매우 어렵습니다. 하지만 pprint를 적용하면 파이썬이 JSON 구조에 맞춰 키와 값들을 계층적으로 정리해 주기 때문에 훨씬 가독성이 높아집니다.

pprint 없이 출력하기

아래 프로그램은 웹 페이지의 JSON 콘텐츠를 전통적인 print 메서드로 그대로 출력합니다. 실행 결과 전체가 한 줄로 나오는 것을 확인할 수 있습니다.

예제 코드

import requests
json_url_link = "https://pypi.org/pypi/sampleproject/json"
result = requests.get(json_url_link)
print(result.json())

출력 결과

위 코드를 실행하면 다음과 같은 결과가 나옵니다.

{'info': {'author': 'The Python Packaging Authority', 'author_email': 'pypa-dev@googlegroups.com', . . .

pprint 적용하기

이번에는 동일한 콘텐츠에 pprint를 적용해 보겠습니다. 아래 출력 결과처럼 형식이 매우 체계적으로 정리되어 데이터 구조를 한눈에 파악할 수 있습니다.

예제 코드

import requests
from pprint import pprint
json_url_link = "https://pypi.org/pypi/sampleproject/json"
result = requests.get(json_url_link)
pprint(result.json())

출력 결과

위 코드를 실행하면 다음과 같은 결과가 나옵니다.

{'info': {'author': 'The Python Packaging Authority',
          'author_email': 'pypa-dev@googlegroups.com',
          'bugtrack_url': None,
          'classifiers': ['Development Status :: 3 - Alpha',
                          'Intended Audience :: Developers',
                          'License :: OSI Approved :: MIT License',
                          'Programming Language :: Python :: 2',
                          'Programming Language :: Python :: 2.7',

pprint의 유용한 옵션들

pprint는 기본 사용법 외에도 출력 형식을 세밀하게 조정할 수 있는 다양한 옵션을 제공합니다.

  • width: 한 줄의 최대 문자 수를 지정합니다. 기본값은 80자입니다.
  • indent: 각 중첩 수준마다 적용될 들여쓰기 공백 수를 지정합니다.
  • depth: 출력할 중첩 구조의 최대 깊이를 제한합니다. 지정한 깊이를 초과하면 '...'으로 표시됩니다.
  • sort_dicts: 딕셔너리 키를 알파벳 순으로 정렬할지 여부를 설정합니다(기본값은 True).

옵션 활용 예제

from pprint import pprint

data = {
    'name': 'sampleproject',
    'versions': ['1.0', '1.1', '1.2'],
    'info': {'author': 'PyPA', 'license': 'MIT'}
}

# 폭 40자, 들여쓰기 4칸으로 출력
pprint(data, width=40, indent=4)

이처럼 pprint는 API 응답, 설정 파일, 중첩된 딕셔너리나 리스트 등 복잡한 데이터 구조를 디버깅하거나 확인할 때 개발 생산성을 크게 높여주는 필수 도구입니다.