1. 쉼표로 정리하는 마법: CSV 읽기와 쓰기

CSV 파일 안에는 이렇게 무미건조한 텍스트만 잔뜩 들어있습니다. 이름,나이,직업 파이썬,12,학생 자바,14,선생님

파이썬의 csv 모듈을 사용하면 이 문장들을 깔끔한 리스트나 딕셔너리로 쫙쫙 뽑아낼 수 있습니다.

1.1 기본 리스트로 뽑아내기 (reader & writer)

csv.reader를 거치면 한 줄 한 줄이 파이썬 리스트로 변신합니다.

[주의!] CSV reader는 “반복자(Iterator)” 입니다. 무슨 말이냐고요? 한 번 처음부터 끝까지 다 읽어내고 나면 텅 비어버립니다! 두 번 출력하고 싶다면 파일을 다시 열거나 처음 위치로 되돌려야 해요.

import csv

# 1. 파일 열기!
with open('students.csv', 'r') as f:
    # 2. CSV 해독기에 넣기
    data_reader = csv.reader(f)
    
    # 3. 한 줄씩 뽑아보기
    for row in data_reader:
        print(row)
        # 출력: ['이름', '나이', '직업']
        # 출력: ['파이썬', '12', '학생']

새로운 데이터를 CSV 파일로 저장하려면 csv.writerwriterow를 씁니다!

import csv

new_data = [
    ['Hero', 'Level', 'HP'],
    ['Warrior', '15', '300'],
    ['Mage', '12', '150']
]

# newline='' 을 넣어야 줄바꿈이 두 번 일어나는 걸 막을 수 있어요!
with open('game_stats.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    for row in new_data:
        writer.writerow(row)

1.2 이름표 달고 뽑기 (DictReader & DictWriter)

리스트로 보면 row[0], row[1]처럼 숫자(인덱스)로 찾아야 해서 헷갈릴 수 있습니다. 맨 첫 줄에 있는 “이름”, “나이” 같은 제목(헤더)을 활용해서 딕셔너리처럼 뽑아주는 기능이 바로 DictReader 입니다!

import csv

with open('students.csv', 'r') as f:
    # DictReader를 쓰면 딕셔너리로 변신합니다!
    reader = csv.DictReader(f)
    
    for row in reader:
        # 이제 숫자 대신 직관적인 '이메일'이나 '이름' 태그로 꺼낼 수 있어요!
        print(row['이름'], "학생의 나이는", row['나이'])

반대로 저장할 때도 DictWriter를 쓰면 됩니다. 단, 파일 맨 앞줄에 제목표(Header)를 써주는 writeheader() 함수를 꼭 불러줘야 한다는 점 잊지 마세요!


1.3 쌍둥이 형제, TSV 파일

쉼표(,) 대신 키보드의 Tab 키(간격 띄우기)로 데이터를 잘라놓은 파일을 TSV(Tab-Separated Values) 라고 부릅니다. 파이썬에서는 csv 모듈을 그대로 쓰되, “이 파일은 탭(\t)으로 잘린 파일이야!” 라고 delimiter 옵션만 살짝 알려주면 똑같이 마법을 부릴 수 있습니다.

import csv

with open('data.tsv', 'r') as f:
    # delimiter='\t' 로 탭 구분자라고 알려줍니다!
    reader = csv.reader(f, delimiter='\t')
    for row in reader:
        print(row)
서브목차