Python에서 CSV 파일을 읽고 구문 분석하는 방법

내장된 csv 모듈을 사용하여 Python에서 CSV 파일을 읽고 구문 분석하는 방법을 알아보세요. 목록, 사전 판독기 및 사용자 정의 구분 기호로 읽기를 마스터하세요.

Editor에서 이 솔루션을 사용해 보세요.

개요

CSV(쉼표로 구분된 값)는 표 형식의 데이터세트를 저장하기 위한 유비쿼터스 파일 형식입니다. 데이터베이스 가져오기, 스프레드시트 내보내기, 로그 다운로드 등 무엇이든 CSV 읽기는 핵심 기술입니다. Python에는 Pandas와 같은 타사 라이브러리 없이도 CSV 파일을 쉽게 구문 분석할 수 있는 고도로 최적화된 전용 내장 'csv' 모듈이 포함되어 있습니다.

`csv.reader` 함수는 파일을 한 줄씩 읽고 구문 분석하여 각 행을 쉼표 구분 기호로 나누고 문자열 목록을 반환합니다. CSV 파일에 헤더 행(예: 열 레이블)이 있는 경우 `csv.DictReader`를 사용하는 것이 선호되는 경우가 많습니다. 각 행을 키가 열 레이블인 사전으로 자동으로 구문 분석하여 코드를 훨씬 더 읽기 쉽고 열 순서 변경에 강력하게 만듭니다.

CSV 파일을 열 때 `open()` 문에 `newline=""`을 설정하는 것이 가장 좋습니다. 이는 Python이 자동 개행 변환을 수행하지 못하게 하여 특정 운영 체제에서 구문 분석 오류가 발생할 수 있습니다. 또한 특수 문자를 처리하려면 항상 `encoding="utf-8"`을 지정하세요.

코드 및 실행 출력

이 스크립트는 샘플 CSV 파일을 작성하고 csv.reader 및 csv.DictReader를 모두 사용하여 읽는 방법을 보여줍니다.

import csv

# Writing a sample CSV file
sample_content = [
    ["name", "role", "salary"],
    ["Alice", "Developer", "90000"],
    ["Bob", "Manager", "110000"]
]
with open("employees.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerows(sample_content)

# 1. Reading CSV using csv.reader (List representation)
print("--- Using csv.reader ---")
with open("employees.csv", "r", newline="", encoding="utf-8") as file:
    reader = csv.reader(file)
    header = next(reader) # Skip header row
    print("Header:", header)
    for row in reader:
         print(f"Employee: {row[0]} | Role: {row[1]}")

# 2. Reading CSV using csv.DictReader (Dictionary representation)
print("\n--- Using csv.DictReader ---")
with open("employees.csv", "r", newline="", encoding="utf-8") as file:
    dict_reader = csv.DictReader(file)
    for row in dict_reader:
         print(f"Name: {row['name']} | Role: {row['role']} | Salary: {row['salary']}")
터미널 출력
--- Using csv.reader ---
Header: ['name', 'role', 'salary']
Employee: Alice | Role: Developer
Employee: Bob | Role: Manager

--- Using csv.DictReader ---
Name: Alice | Role: Developer | Salary: 90000
Name: Bob | Role: Manager | Salary: 110000

단계별 구현

  • 스크립트에 내장된 csv 모듈을 가져옵니다.
  • open("employees.csv", "r", newline="", 인코딩="utf-8")을 파일로 사용하여 CSV 파일을 엽니다.
  • 파일 객체를 csv.reader(file)에 전달하여 파일 행을 문자열 목록으로 구문 분석합니다.
  • csv.DictReader(file)를 사용하여 행을 열 헤더에 해당하는 사전 매핑으로 구문 분석합니다.

자주 묻는 질문

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

newline=""을 설정하면 Python이 줄 끝 문자를 동적으로 수정하는 것을 방지하여 csv 모듈이 다양한 운영 체제에서 csv 스타일 줄 바꿈을 올바르게 구문 분석할 수 있도록 합니다.

쉼표 대신 탭이나 세미콜론을 사용하는 CSV 파일을 어떻게 구문 분석합니까?

csv.reader(file, delimiter="\t") 또는 csv.reader(file, delimiter=";")와 같이 사용자 정의 구분 기호를 판독기 함수에 전달할 수 있습니다.

관련 주제

권장 Python 리소스

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