JSON과 CSV
Pythonで JSON과 CSV 데이터를 다루는 방법を学びましょう. 이 두 가지는 가장 널리 사용되는 데이터 교환 형식입니다.
JSON 다루기 📦
JSON(JavaScript Object Notation)은 데이터를 저장하고 전송하는 경량 형식입니다.
기본 사용법
import json
# Python 객체 → JSON 문자열
data = {
'name': '홍길동',
'age': 30,
'city': '서울',
'hobbies': ['독서', '등산', '요리']
}
json_string = json.dumps(data)
print(json_string)
# {"name": "홍길동", "age": 30, "city": "서울", "hobbies": ["독서", "등산", "요리"]}
# JSON 문자열 → Python 객체
parsed_data = json.loads(json_string)
print(parsed_data['name']) # 홍길동
파일로 저장하고 읽기
import json
# JSON 파일로 저장
data = {
'users': [
{'id': 1, 'name': '김철수', 'email': 'kim@example.com'},
{'id': 2, 'name': '이영희', 'email': 'lee@example.com'},
]
}
with open('users.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
# JSON ファイルの読み取り
with open('users.json', 'r', encoding='utf-8') as f:
loaded_data = json.load(f)
print(loaded_data)
JSON 포맷팅 옵션
import json
data = {'name': '홍길동', 'age': 30, 'skills': ['Python', 'JavaScript']}
# 들여쓰기 없음 (압축)
compact = json.dumps(data)
print(compact)
# {"name": "홍길동", "age": 30, "skills": ["Python", "JavaScript"]}
# 들여쓰기 2칸 (읽기 쉽게)
pretty = json.dumps(data, indent=2, ensure_ascii=False)
print(pretty)
# {
# "name": "홍길동",
# "age": 30,
# "skills": [
# "Python",
# "JavaScript"
# ]
# }
# 키 정렬
sorted_json = json.dumps(data, sort_keys=True, indent=2, ensure_ascii=False)
print(sorted_json)
복잡한 데이터 타입 처리
import json
from datetime import datetime
from decimal import Decimal
class DateTimeEncoder(json.JSONEncoder):
"""datetime을 JSON으로 직렬화"""
def default(self, obj):
if isinstance(obj, datetime):
return obj.isoformat()
if isinstance(obj, Decimal):
return float(obj)
return super().default(obj)
# 사용 예제
data = {
'timestamp': datetime.now(),
'amount': Decimal('123.45')
}
json_string = json.dumps(data, cls=DateTimeEncoder, indent=2)
print(json_string)