CSV 파일?

CSV (Comma Separated Values) format

"csv 모듈"은 콤마로 구분된 값을 담은 파일을 읽거나 쓸 때 사용한다.

# CSV 파일은 일반적으로 콤마나 탭으로 구분된 값을 담는다.
Sonic, 010-7184-4696, "Developer", "Team, Bali"

샘플 파일 : https://gist.github.com/ultrakain/cbeddd7038f2256963f2c053762dca54

CSV 파일 열기

>>> import csv

>>> with open('eggs.csv', 'rb') as csvfile:
...     spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
...     for row in spamreader:
...         print(', '.join(row))

Spam, Spam, Spam, Spam, Spam, Baked Beans
Spam, Lovely Spam, Wonderful Spam

csv.reader() 함수

  • delimiter : 구분문자, 기본 값은 쉼표(,)
  • quotechar : 인용 부호를 지정, 기본 값은 큰따옴표(")

CSV 파일 쓰기

import csv

with open('eggs.csv', 'w', encoding='utf-8') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_NONE)
    spamwriter.writerow(['Spam'] * 5 + ['BakedBeans'])
    spamwriter.writerow(['Spam', 'LovelySpam', 'WonderfulSpam'])


# 파일 내용
# quoting=csv.QUOTE_MINIMAL
# Spam |Lovely Spam| |Wonderful Spam|

# quoting=csv.QUOTE_ALL
# |Spam| |Lovely Spam| |Wonderful Spam|

# quoting=csv.QUOTE_NONE
# Error, 공백이나 특수문자를 없애야 함
# Spam Spam Spam Spam Spam BakedBeans
# Spam LovelySpam WonderfulSpam

예제소스

간단한 csv 파일 파일 읽기

import csv

with open('some.csv', 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

대체 포맷으로 된 CSV 파일 읽기

import csv

with open('passwd', 'rb') as f:
    reader = csv.reader(f, delimiter=':', quoting=csv.QUOTE_NONE)
    for row in reader:
        print(row)

간단한 csv 파일 쓰기

import csv

with open('some.csv', 'wb') as f:
    writer = csv.writer(f)
    writer.writerows(someiterable)

새 custom 포맷을 등록하고 쓰기

import csv

csv.register_dialect('unixpwd', delimiter=':', quoting=csv.QUOTE_NONE)
with open('passwd', 'rb') as f:
    reader = csv.reader(f, 'unixpwd')

csv 파일 작업 중 예외 잡기 및 리포팅

import csv, sys

filename = 'some.csv'
with open(filename, 'rb') as f:
    reader = csv.reader(f)
    try:
        for row in reader:
            print row
    except csv.Error as e:
        sys.exit('file %s, line %d: %s' % (filename, reader.line_num, e))

문자열 파싱에 이용하기

import csv

for row in csv.reader(['one,two,three']):
    print row

results matching ""

    No results matching ""