CSV의 개념과 파이썬 활용법
CSV(Comma-Separated Values)
는 간단한 텍스트 형식으로 데이터를 저장하고 교환하는 데 사용됩니다.
CSV 파일은 표 형식의 데이터를 텍스트로 저장하며, 각 데이터 필드는 쉼표(,)
로 구분됩니다.
이름,나이,도시 홍길동,24,서울 박민주,30,부산
CSV는 스프레드시트 프로그램(예: Microsoft Excel, Google Sheets) 및 데이터베이스 관리 시스템과 호환됩니다.
CSV의 기본 구조
헤더
: 파일의 첫 번째 줄은 옵션으로, 각 열(column)의 이름을 포함할 수 있습니다. 헤더는 데이터를 해석하는 데 도움을 줍니다.
레코드(행)
: 각 행은 하나의 데이터 레코드를 나타냅니다. 일반적으로 데이터베이스의 하나의 엔트리나 객체를 의미합니다.
필드(열)
: 행 내의 각 데이터 항목은 필드라고 하며, 쉼표로 구분됩니다. 이 필드들은 각각의 데이터 포인트를 나타냅니다.
CSV 파일 읽기 및 쓰기
파이썬의 csv
내장 모듈을 사용하면 CSV 파일을 쉽게 읽고 쓸 수 있습니다.
csv.reader
: CSV 파일 읽기
csv.reader
는 CSV 파일을 읽기 위한 객체를 생성합니다.
이 객체는 파일 내의 각 레코드(행)을 순회하며, 각 레코드를 필드(열)의 리스트로 변환하여 반환합니다. 기본적으로 데이터는 쉼표로 구분되지만, 다른 구분자도 지정할 수 있습니다.
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 역시 기본적으로 쉼표를 필드 구분자로 사용하지만, 필요에 따라 변경할 수 있습니다.
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 예제
# 동일한 파일 경로의 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 함수를 사용하여 파일을 직접 읽고 쓰는 것을 지원하지 않습니다.
실습
화면 오른쪽 코드 실행
버튼을 누르고, 크롤링 결과를 확인하거나 코드를 수정해 보세요!
가이드라인
AI 튜터
배포
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
실행 결과