CSV는 「쉼표로 구분된 텍스트」 형식으로 엑셀·DB·로그에서 가장 흔한 데이터 교환 형식입니다.
파이썬 표준 csv 모듈만으로도 대부분 처리 가능하고, 대용량은 pandas가 더 빠릅니다.
읽기.
import csv.
with open("data.csv") as f: reader = csv.DictReader(f); for row in reader: print(row["name"]).
DictReader는 헤더를 키로 한 dict로 반환 — 가장 쓰기 편합니다.
쓰기.
with open("out.csv", "w", newline="", encoding="utf-8") as f: writer = csv.DictWriter(f, fieldnames=["name", "age"]); writer.writeheader(); writer.writerows(data).
newline=""이 핵심 — 안 적으면 윈도우에서 빈 줄.
한국어와 인코딩.
한국에서 다루는 CSV는 UTF-8과 EUC-KR(또는 CP949)이 섞여 있습니다.
인코딩 안 맞으면 UnicodeDecodeError.
encoding="utf-8" 또는 encoding="cp949"로 명시.
chardet 라이브러리로 자동 감지도 가능.
엑셀 호환 — UTF-8 BOM.
엑셀이 UTF-8 CSV를 한국어 깨지게 여는 경우, encoding="utf-8-sig"로 저장하면 BOM이 붙어서 엑셀이 자동으로 UTF-8로 인식.
사용자가 더블클릭으로 여는 파일은 이 옵션이 필수입니다.
한 줄 요약
csv 모듈은 DictReader/DictWriter가 가장 편합니다.
newline="" + 인코딩(utf-8/cp949) 명시가 핵심, 엑셀 호환 시 utf-8-sig로 BOM 부착.
더 알아볼 것
- pandas.read_csv vs csv 모듈
- CSV 표준 RFC 4180
- Excel 직접 처리 — openpyxl