2 분 소요

csv 파일 읽기, 쓰기

  • import csv
import csv
with open('./resource/data_sample1.csv', 'r') as fp:
    reader = csv.reader(fp)
    
    print(reader)
    print(type(reader))
    <_csv.reader object at 0x0000015F937C0100>
    <class '_csv.reader'>

 

import csv
with open('./resource/data_sample1.csv', 'r') as fp:
    reader = csv.reader(fp)
    
    print(dir(reader))

iter 가 있으면 반복문 처리가 가능하다

    ['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'dialect', 'line_num']

 

import csv
with open('./resource/data_sample1.csv', 'r') as fp:
    reader = csv.reader(fp)
    next(reader)# 1행을 스킵해준다-1행은 보통 목록
    
    for content in reader:
        print(content)
    
    ['1', '김정수', '2017-01-19 11:30', '25']
    ['2', '김진혜', '2017-01-19 11:30', '26']
    ['3', '고유정', '2017-02-22 14:09', '27']
    ['4', '김은향', '2017-04-01 18:00', '22']
    ['5', '이준수', '2017-05-14 22:33', '27']
    ['6', '온지수', '2017-01-11 6:04', '30']
    ['7', '홍길동', '2017-02-08 7:44', '31']
    ['8', '강백호', '2017-01-19 11:30', '32']
    ['9', '주은명', '2017-01-19 11:30', '33']
    ['10', '김수진', '2017-01-19 11:30', '34']
    ['11', '박진형', '2017-02-07 10:22', '35']
    ['12', '정순미', '2017-01-22 9:10', '33']
    ['13', '김정현', '2017-02-22 14:09', '45']
    ['14', '홍미진', '2017-04-01 18:00', '17']
    ['15', '김순철', '2017-05-14 22:33', '22']
    ['16', '이동철', '2017-03-01 23:44', '27']
    ['17', '박지숙', '2017-01-11 6:04', '30']
    ['18', '김은미', '2017-02-08 7:44', '51']
    ['19', '장혁철', '2017-12-01 13:01', '16']
    

 

import csv
with open('./resource/data_sample2.csv', 'r') as fp:
    reader = csv.reader(fp, delimiter='|')
    next(reader)
    
    for content in reader:
        print(content)

delimiter =’|’ : 구분자를 ‘ㅣ’를 없애준다

    ['1', '김정수', '2017-01-19 11:30:00', '25']
    ['2', '박민구', '2017-02-07 10:22:00', '35']
    ['3', '정순미', '2017-01-22 09:10:00', '33']
    ['4', '김정현', '2017-02-22 14:09:00', '45']
    ['5', '홍미진', '2017-04-01 18:00:00', '17']
    ['6', '김순철', '2017-05-14 22:33:07', '22']
    ['7', '이동철', '2017-03-01 23:44:45', '27']
    ['8', '박지숙', '2017-01-11 06:04:18', '30']
    ['9', '김은미', '2017-02-08 07:44:33', '51']
    ['10', '장혁철', '2017-12-01 13:01:11', '16']

 

디렉터리 변환

with open('./resource/data_sample1.csv', 'r') as fp:
    reader = csv.DictReader(fp) 
    
    for content in reader:
        for key, value in content.items(): #키와 벨류 출력
            print(key, value)
        print('----------------')
        

DictReader(key,value 형태로 변환

 

    No. 1
    이름 김정수
    가입일시 2017-01-19 11:30
    나이 25
    ----------------
    No. 2
    이름 김진혜
    가입일시 2017-01-19 11:30
    나이 26
    ----------------
    No. 3
    이름 고유정
    가입일시 2017-02-22 14:09
    나이 27
    ----------------
    No. 4
    이름 김은향
    가입일시 2017-04-01 18:00
    나이 22
    ----------------
    No. 5
    이름 이준수
    가입일시 2017-05-14 22:33
    나이 27
    ----------------
    No. 6
    이름 온지수
    가입일시 2017-01-11 6:04
    나이 30
    ----------------
    No. 7
    이름 홍길동
    가입일시 2017-02-08 7:44
    나이 31
    ----------------
    No. 8
    이름 강백호
    가입일시 2017-01-19 11:30
    나이 32
    ----------------
    No. 9
    이름 주은명
    가입일시 2017-01-19 11:30
    나이 33
    ----------------
    No. 10
    이름 김수진
    가입일시 2017-01-19 11:30
    나이 34
    ----------------
    No. 11
    이름 박진형
    가입일시 2017-02-07 10:22
    나이 35
    ----------------
    No. 12
    이름 정순미
    가입일시 2017-01-22 9:10
    나이 33
    ----------------
    No. 13
    이름 김정현
    가입일시 2017-02-22 14:09
    나이 45
    ----------------
    No. 14
    이름 홍미진
    가입일시 2017-04-01 18:00
    나이 17
    ----------------
    No. 15
    이름 김순철
    가입일시 2017-05-14 22:33
    나이 22
    ----------------
    No. 16
    이름 이동철
    가입일시 2017-03-01 23:44
    나이 27
    ----------------
    No. 17
    이름 박지숙
    가입일시 2017-01-11 6:04
    나이 30
    ----------------
    No. 18
    이름 김은미
    가입일시 2017-02-08 7:44
    나이 51
    ----------------
    No. 19
    이름 장혁철
    가입일시 2017-12-01 13:01
    나이 16
    ----------------
    

 

cvs쓰기

data = [
    [100, 200, 300],
    [100, 200, 300],
    [100, 200, 300],
    [100, 200, 300]
]
with open('./resource/data_sample3.csv', 'w', newline='') as fp:  
    wt = csv.writer(fp) 
    wt.writerows(data)

newline’‘-줄바꿈 처리를 안함

with open('./resource/data_sample4.csv','w', newline='') as fp:
    wt = csv.writer(fp)#검증이 끝난 데이터인 경우 한번에 처리
    wt.writerows(data)#한번에 쓰기

카테고리:

업데이트:

댓글남기기