Chomu's Blog.

>

Posts

GitHub

csv 모듈 내 DictReader DictWriter 클래스

Python의 내장 모듈인 csv 모듈에는 csv 파일을 읽고 쓰는데 유용한 클래스들이 있다.
이번 포스트에서는 그 중에서도 list[dict] 형태를 읽고 쓰는데 사용되는 DictReader와 DictWriter 클래스에 대해 알아보자.

목차

csv.DictReader 클래스

class csv.DictReader(f, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)

자주 사용되지 않는 인자

  • restkey : fieldnames에서 지정되지 않은 나머지 필드 이름을 저장할 키
  • restval : 지정되지 않은 값들을 저장할 값
  • dialect : csv 파일의 구분자, 따옴표 등을 지정 (csv.Dialect 클래스 참고)

예시

test.csv | name | age | address | | ---- | --- | ------- | | 홍길동 | 20 | 서울시 강남구 | | 이순신 | 30 | 서울시 강북구 | | 강감찬 | 40 | 서울시 강서구 |

import csv
 
with open('test.csv', 'r') as f:
    reader = csv.DictReader(f)
    print(*reader, end='\n')
{'name': '홍길동', 'age': '20', 'address': '서울시 강남구'}
{'name': '이순신', 'age': '30', 'address': '서울시 강북구'}
{'name': '강감찬', 'age': '40', 'address': '서울시 강서구'}

csv.DictWriter 클래스

class csv.DictWriter(f, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)

자주 사용되지 않는 인자

  • restval : fieldnames에서 지정되지 않은 값들을 저장할 값
  • extrasaction : fieldnames에 지정되지 않은 값들을 처리하는 방법
    • raise : 예외 발생(기본값)
    • ignore : 무시
  • dialect : csv 파일의 구분자, 따옴표 등을 지정 (csv.Dialect 클래스 참고)

예시

import csv
 
with open('test.csv', 'w', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=['name', 'age', 'address'])
    writer.writeheader()
    writer.writerow({'name': '홍길동', 'age': 20, 'address': '서울시 강남구'})
    writer.writerows(
        [
            {'name': '이순신', 'age': 30, 'address': '서울시 강북구'},
            {'name': '강감찬', 'age': 40, 'address': '서울시 강서구'},
        ]
    )

test.csv | name | age | address | | ---- | --- | ------- | | 홍길동 | 20 | 서울시 강남구 | | 이순신 | 30 | 서울시 강북구 | | 강감찬 | 40 | 서울시 강서구 |