Python CSV: 스프레드시트 읽기 및 쓰기

Python에서 CSV 데이터를 처리하는 방법을 알아보세요. 효율적인 테이블 구문 분석을 위한 마스터 csv.reader, csv.writer 및 DictReader/DictWriter.

에디터에서 사용해 보세요

개요

CSV(쉼표로 구분된 값)는 스프레드시트 및 관계형 데이터베이스에서 데이터를 내보내고 가져오기 위한 유비쿼터스 형식입니다. CSV 파일은 간단한 텍스트 파일이기 때문에 분석 도구, 데이터베이스 플랫폼 및 프로그래밍 언어에서 보편적으로 지원됩니다. Python에는 Pandas와 같은 타사 라이브러리 없이도 표 형식 데이터를 구문 분석, 작성 및 조작하는 데 특별히 최적화된 내장 `csv` 모듈이 있습니다.

csv 모듈은 목록 기반 판독기/작성기와 사전 기반 판독기/작성기라는 두 가지 기본 인터페이스를 제공합니다. `csv.reader()` 및 `csv.writer()`는 CSV의 각 행을 문자열 목록으로 표시합니다. 이는 간단하지만 숫자 인덱스로 열을 참조해야 합니다. 보다 강력한 접근 방식을 위해 개발자는 `csv.DictReader()` 및 `csv.DictWriter()`를 사용합니다. 이러한 클래스는 CSV 헤더 행을 키로 사용하여 각 행을 사전에 매핑하여 열이 재정렬되어도 깨지지 않는 읽기 쉬운 코드를 생성합니다.

CSV 파일을 처리할 때는 구문 세부정보가 중요합니다. 프로그램마다 탭이나 세미콜론과 같은 서로 다른 구분 기호를 사용하고 따옴표나 줄 끝을 서로 다른 방식으로 처리합니다. `csv` 모듈을 사용하면 'dialect' 매개변수를 통해 사용자 정의 구분 기호, 인용 규칙 및 이스케이프 문자를 정의할 수 있습니다. 또한 Python에서 CSV 파일을 열 때 다양한 운영 체제에서 빈 줄 문제를 방지하려면 `newline=''`을 `open()` 함수에 전달하는 것이 중요합니다.

코드 및 실행 출력

DictWriter를 사용하여 CSV 파일에 데이터를 쓰고 DictReader를 사용하여 다시 읽습니다.

import csv

filename = "employees.csv"
fieldnames = ["id", "name", "department"]
data = [
    {"id": "101", "name": "Bob", "department": "HR"},
    {"id": "102", "name": "Alice", "department": "Engineering"}
]

# Write dict data to CSV
with open(filename, "w", newline="") as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(data)

print("CSV written successfully.\n--- Reading CSV ---")

# Read CSV data back as dictionaries
with open(filename, "r", newline="") as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(f"Employee {row['name']} works in {row['department']}.")
터미널 출력
CSV written successfully.
--- Reading CSV ---
Employee Bob works in HR.
Employee Alice works in Engineering.

단계별 구현

  • 재무 분석을 위해 스프레드시트 레코드 내보내기
  • 연락처 목록 카탈로그를 데이터베이스로 가져오기
  • 계산 스크립트의 통계 출력 형식 지정

자주 묻는 질문

CSV 파일을 열 때 newline=""을 지정해야 하는 이유는 무엇입니까?

이는 특히 Windows 플랫폼에서 추가 빈 줄이 삽입되는 것을 방지하기 위해 csv 모듈의 내부 기록기에 필요합니다.

쉼표 대신 탭을 사용하는 CSV 파일을 어떻게 구문 분석할 수 있나요?

csv.reader(file, delimiter='\t')와 같이 구분 기호 매개변수를 판독기 또는 기록기에 전달할 수 있습니다.

관련 주제

권장 Python 리소스

관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.