CSV(Comma-Separated Values)는 가장 흔한 데이터 교환 형식입니다.
엑셀·구글 시트·데이터베이스가 모두 CSV를 주고받으며, 파이썬의 csv 모듈로 표준적으로 처리할 수 있습니다.
기본 읽기.
import csv.
with open("data.csv", encoding="utf-8") as f: reader = csv.reader(f); for row in reader: print(row).
각 row는 문자열 리스트입니다.
딕셔너리로 읽기.
csv.DictReader는 첫 줄을 헤더로 인식해 각 row를 딕셔너리로 만들어 줍니다.
for row in csv.DictReader(f): print(row["name"], row["age"]).
컬럼 이름으로 접근할 수 있어 코드가 훨씬 명료합니다.
쓰기.
with open("out.csv", "w", encoding="utf-8", newline="") as f: writer = csv.writer(f); writer.writerow(["name", "age"]); writer.writerows([["홍", 30], ["김", 25]]).
newline=""이 중요합니다 — 안 쓰면 윈도우에서 빈 줄이 생기는 함정.
한국어 CSV의 함정.
엑셀로 만든 CSV는 종종 「cp949」 인코딩이고, 구글 시트는 「utf-8」, 일부는 「utf-8-sig」(BOM 포함).
인코딩이 안 맞으면 한글이 깨집니다.
보통 utf-8로 시도해 보고 실패하면 cp949·utf-8-sig를 차례로 시도합니다.
또 본격적인 데이터 분석에는 csv 모듈보다 pandas의 pd.read_csv가 훨씬 강력합니다.
한 줄 요약
csv 모듈은 CSV 파일 읽기·쓰기를 표준화합니다.
DictReader로 컬럼 이름 접근, newline="" 옵션으로 빈 줄 함정 회피, 한국어는 utf-8/cp949 인코딩 주의가 필요합니다.
더 알아볼 것
- pandas.read_csv — 데이터 분석의 표준
- CSV 방언(dialect) 옵션
- Excel 파일은 openpyxl·pandas