본문으로 건너뛰기
실습하기

CSV의 개념과 파이썬 활용법

CSV(Comma-Separated Values)는 간단한 텍스트 형식으로 데이터를 저장하고 교환하는 데 사용됩니다.

CSV 파일은 표 형식의 데이터를 텍스트로 저장하며, 각 데이터 필드는 쉼표(,)로 구분됩니다.

example.csv
이름,나이,도시
홍길동,24,서울
박민주,30,부산

CSV는 스프레드시트 프로그램(예: Microsoft Excel, Google Sheets) 및 데이터베이스 관리 시스템과 호환됩니다.


CSV의 기본 구조

헤더: 파일의 첫 번째 줄은 옵션으로, 각 열(column)의 이름을 포함할 수 있습니다. 헤더는 데이터를 해석하는 데 도움을 줍니다.

레코드(행): 각 행은 하나의 데이터 레코드를 나타냅니다. 일반적으로 데이터베이스의 하나의 엔트리나 객체를 의미합니다.

필드(열): 행 내의 각 데이터 항목은 필드라고 하며, 쉼표로 구분됩니다. 이 필드들은 각각의 데이터 포인트를 나타냅니다.


CSV 파일 읽기 및 쓰기

파이썬의 csv 내장 모듈을 사용하면 CSV 파일을 쉽게 읽고 쓸 수 있습니다.


csv.reader: CSV 파일 읽기

csv.reader는 CSV 파일을 읽기 위한 객체를 생성합니다.

이 객체는 파일 내의 각 레코드(행)을 순회하며, 각 레코드를 필드(열)의 리스트로 변환하여 반환합니다. 기본적으로 데이터는 쉼표로 구분되지만, 다른 구분자도 지정할 수 있습니다.

csv.reader 예제
import csv

with open('example.csv', 'r', newline='') as file:
reader = csv.reader(file)
for row in reader:
print(row)

위 코드는 example.csv 파일을 열고, 파일의 각 행을 출력합니다.

newline=''는 파일을 열 때 권장되는 방식으로, 플랫폼에 관계없이 일관된 개행 문자(줄바꿈) 처리를 위해 사용됩니다.


csv.writer: CSV 파일 쓰기

csv.writer는 CSV 파일에 데이터를 쓰기 위한 객체를 생성합니다.

이 객체를 사용하여 데이터 필드를 포함한 행을 CSV 파일에 쓸 수 있습니다. csv.writer 역시 기본적으로 쉼표를 필드 구분자로 사용하지만, 필요에 따라 변경할 수 있습니다.

csv.writer 예제
import csv

with open('output.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['name', 'age', 'city'])
writer.writerow(['John Doe', '30', 'New York'])
writer.writerow(['Jane Smith', '25', 'Los Angeles'])

이 코드는 새로운 output.csv 파일을 생성하고, 각 행에 데이터를 쓰기 위해 writerow 메소드를 사용합니다.

첫 번째 writerow 호출은 헤더 행을 작성하고, 이후 호출에서는 데이터 행을 추가합니다.


csv 모듈의 다른 기능들

  • csv.DictReader: CSV 파일을 딕셔너리 객체로 읽어들입니다.

  • csv.DictWriter: 사전 객체를 CSV 파일로 작성합니다.


DictReader, DictWriter 예제

동일한 파일 경로의 example.csv 파일 처리
# 동일한 파일 경로의 xample.csv 파일을 딕셔너리로 읽기
with open('example.csv', 'r') as file:
csv_reader = csv.DictReader(file)

# 각 행을 출력
for row in csv_reader:
print(row)

# 필드명
fieldnames = ['name', 'age', 'city']

# 데이터
rows = [
{'name': '김철수', 'age': 20, 'city': '대전'},
{'name': '이영희', 'age': 22, 'city': '광주'}
]

with open('output_dict.csv', 'w', newline='') as file:
# 필드명을 지정
csv_writer = csv.DictWriter(file, fieldnames=fieldnames)

# 헤더 작성
csv_writer.writeheader()

# 데이터 작성
for row in rows:
csv_writer.writerow(row)

참고: 현재 학습 환경에서는 open 함수를 사용하여 파일을 직접 읽고 쓰는 것을 지원하지 않습니다.


실습

화면 오른쪽 코드 실행 버튼을 누르고, 크롤링 결과를 확인하거나 코드를 수정해 보세요!

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!