Python의 CSV (Comma-Separated Values) 모듈은 데이터를 CSV 형식으로 읽고 쓰는데 사용되는 매우 유용한 라이브러리입니다. 이 글에서는 CSV 모듈의 기본적인 사용법부터 고급 기능까지 상세하게 설명하고, 특히 윈도우즈에서 엑셀로 파일을 열 때 필요한 인코딩 설정 및 DictReader
와 DictWriter
의 활용 방법에 대해서도 자세히 다룰 것입니다.
1. CSV 모듈 소개 및 기본 사용법
1) CSV 모듈의 기능 및 특징
CSV 모듈은 표준 Python 라이브러리의 일부로, CSV 파일을 읽고 쓰는 데 필요한 기능을 제공합니다. CSV 파일은 각 데이터가 쉼표로 구분되는 텍스트 파일로, 엑셀과 같은 스프레드시트 프로그램에서 널리 사용됩니다.
2) CSV 파일 읽기: csv.reader
CSV 파일을 읽기 위해서는 csv.reader
객체를 사용합니다. 간단한 예제로 기본 사용법을 살펴보겠습니다.
import csv
with open('example.csv', mode='r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row)
위 코드는 'example.csv' 파일을 읽어 각 행을 출력합니다. with
구문을 사용하여 파일을 안전하게 열고, csv.reader
객체를 통해 파일 내용을 순회합니다.
3) CSV 파일 쓰기: csv.writer
CSV 파일을 쓰기 위해서는 csv.writer
객체를 사용합니다. 이 예제는 간단한 데이터를 CSV 파일로 저장하는 방법을 보여줍니다.
import csv
data = [['Name', 'Age'], ['Alice', 24], ['Bob', 22]]
with open('output.csv', mode='w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
for row in data:
writer.writerow(row)
writer.writerow
메서드를 사용하여 각 행을 CSV 파일에 씁니다. newline=''
을 설정함으로써, 행 사이에 추가적인 빈 줄이 생성되지 않도록 합니다.
2. 윈도우즈에서 엑셀로 CSV 파일 열기: 인코딩 문제
1) 윈도우즈 엑셀에서의 인코딩 문제
윈도우즈에서 엑셀로 CSV 파일을 열 때 한글 등의 특정 문자가 깨지는 문제가 종종 발생합니다. 이는 엑셀이 기본적으로 CSV 파일을 CP949
또는 다른 인코딩으로 해석하기 때문입니다.
2) 해결책: 인코딩 "utf-8-sig"
이 문제를 해결하기 위해 CSV 파일을 작성할 때 'utf-8-sig' 인코딩을 사용하는 것이 좋습니다. 'utf-8-sig' 인코딩은 UTF-8 인코딩의 변형으로, 파일의 시작 부분에 바이트 순서 표시(Byte Order Mark, BOM)를 추가합니다. 엑셀은 이 BOM을 인식하고 파일을 올바르게 해석할 수 있습니다.
with open('output.csv', mode='w', encoding='utf-8-sig', newline='') as file:
writer = csv.writer(file)
writer.writerows(data)
위 코드는 'utf-8-sig' 인코딩을 사용하여 CSV 파일을 작성합니다.
3. CSV 모듈의 고급 기능: DictReader와 DictWriter
1) DictReader: 헤더를 키로 사용하기
DictReader
는 CSV 파일의 각 행을 사전(dictionary)으로 읽어들입니다. 이 때, 첫 번째 행의 값을 키(key)로 사용합니다.
with open('example.csv', mode='r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
print(row)
이 코드는 CSV 파일의 각 행을 사전 형태로 읽어 출력합니다. 예를 들어, 첫 번째 행이 'Name', 'Age'라면, row
는 {'Name': 'Alice', 'Age': '24'}
와 같은 형태를 가질 것입니다.
2) DictWriter: 사전 데이터를 CSV 파일로 쓰기
DictWriter
는 사전 데이터를 CSV 파일로 쓰는 데 사용됩니다. DictWriter
를 사용하려면 먼저 필드명(헤더)을 지정해야 합니다.
with open('output.csv', mode='w', encoding='utf-8-sig', newline='') as file:
fields = ['Name', 'Age']
writer = csv.DictWriter(file, fieldnames=fields)
writer.writeheader()
for data in [{'Name': 'Alice', 'Age': 24}, {'Name': 'Bob', 'Age': 22}]:
writer.writerow(data)
writeheader
메서드를 사용하여 첫 번째 행으로 필드명을 씁니다. 그 후, 각 사전 데이터를 writerow
메서드를 통해 파일에 씁니다.
4. 마무리
Python의 CSV 모듈은 간단하면서도 매우 강력한 도구입니다. 이 글에서는 기본적인 사용법부터 시작하여, 윈도우즈에서 엑셀로 파일을 열 때의 인코딩 설정, 그리고 DictReader
와 DictWriter
를 사용하는 방법까지 살펴보았습니다. 이러한 기능들을 활용하면 데이터 처리와 관련된 작업을 보다 쉽고 효율적으로 수행할 수 있습니다.
'Programming Language > Python' 카테고리의 다른 글
Python의 time 모듈 활용하기 (0) | 2024.01.17 |
---|---|
Python의 JSON 모듈 사용하기 (0) | 2024.01.14 |
Python의 open 함수: 사용 이유와 방법 (1) | 2024.01.13 |
Python의 input 함수와 getpass 모듈 사용하는 방법 (1) | 2024.01.12 |