본문으로 건너뛰기
Python 기초집LESSON 19

JSON·CSV 데이터 읽기와 저장

난이도입문
예상 시간30분
선수지식이전 강의

19강. JSON·CSV 데이터 읽기와 저장

1. 이번 강의에서 해결할 문제

로그 제공처마다 JSON 또는 CSV를 사용할 수 있습니다. 분석 로직을 중복하지 않도록 입력 형식만 변환하고 공통 모델을 반환합니다.

2. 학습 목표

3. 핵심 개념

JSON은 중첩된 객체·배열을 표현하고 CSV는 행과 열 중심의 평면 데이터에 적합합니다. json.loadcsv.DictReader가 Python 구조를 만들지만 스키마나 숫자형 검증은 애플리케이션 책임입니다.

4. 단계별 코드 예시

파일 경로: C:\dev\game-log-analyzer\battle_analyzer\readers.py

battle_analyzer/readers.py
import csv
import json
from pathlib import Path

from .models import BattleRecord


def record_from_dict(row: dict[str, object]) -> BattleRecord:
return BattleRecord(
player=str(row["player"]),
monster=str(row["monster"]),
skill=str(row["skill"]),
damage=int(row["damage"]),
result=str(row["result"]),
)


def read_json(path: Path) -> list[BattleRecord]:
with path.open(encoding="utf-8") as file:
return [record_from_dict(row) for row in json.load(file)]


def read_csv(path: Path) -> list[BattleRecord]:
with path.open(encoding="utf-8", newline="") as file:
return [record_from_dict(row) for row in csv.DictReader(file)]

실행 명령:

PowerShell
.\.venv\Scripts\python.exe -c "from pathlib import Path; from battle_analyzer.readers import read_json; print(read_json(Path('data/battles.json')))"

5. 코드가 동작하는 이유

상대 import는 같은 패키지의 모델을 가져옵니다. JSON 숫자는 int로 올 수 있지만 CSV 셀은 문자열이므로 공통 변환 함수가 자료형을 정규화합니다. CSV 파일은 공식 권장대로 newline=""로 엽니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

JSON·CSV 데이터 읽기와 저장 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“JSON·CSV 데이터 읽기와 저장” 내용을 실제 작업에 적용한 설명으로 가장 알맞은 것은 무엇인가요?
  2. 문제 2‘CSV 숫자를 계산에 바로 사용’ 실수를 판단할 때 “JSON·CSV 데이터 읽기와 저장” 강의가 제시한 기준은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

19강. JSON·CSV 데이터 읽기와 저장 미완료 상태