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