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 튜터
도움말