규도자 개발 블로그

[Python] csv를 dict로 본문

Python/Python

[Python] csv를 dict로

규도자 (gyudoza) 2022. 2. 9. 21:05

[Python] csv를 dict로

가끔씩 csv로 저장된 요소들을 불러와서 dict로 써야할 때가 있다. 특히 dbeaver나 mysql workbench처럼 결과값을 간단하게 csv형태로 저장할 수 있는 어플리케이션을 다룰 때 많이 필요하더라. 먼저 코드는 아래와 같다.

import csv

mydict = {}
with open('csv_example.csv', mode='r') as file:
    reader = csv.reader(file)
    attrs = []
    result = []
    for row in reader:
        if len(attrs) < 1:
            attrs = row
            continue
        temp_row_dict = dict()
        for key, value in zip(attrs, row):
            temp_row_dict[key] = value
        result.append(temp_row_dict)


for row in result:
    print(row)

위 스크립트와 같은 경로에 csv_example.csv라는 파일이 있으면 해당 파일의 첫줄을 key로, 아래 이어지는 값들을 value로 dict가 생성된다. 예를 들어

idnamepricecategoryetc
1aa3000qqpoi
2bb200qq 
3ee500qqpipo
4ww200ee 
5qq100ee 
6aa5000rroipo
7bb50000ttpipo

위와 같은 csv파일을 넣는다고 하면

{'id': '1', 'name': 'aa', 'price': '3000', 'category': 'qq', 'etc': 'poi'}
{'id': '2', 'name': 'bb', 'price': '200', 'category': 'qq', 'etc': ''}
{'id': '3', 'name': 'ee', 'price': '500', 'category': 'qq', 'etc': 'pipo'}
{'id': '4', 'name': 'ww', 'price': '200', 'category': 'ee', 'etc': ''}
{'id': '5', 'name': 'qq', 'price': '100', 'category': 'ee', 'etc': ''}
{'id': '6', 'name': 'aa', 'price': '5000', 'category': 'rr', 'etc': 'oipo'}
{'id': '7', 'name': 'bb', 'price': '50000', 'category': 'tt', 'etc': 'pipo'}

이런 형태로 출력된다.

 

 

DB에 어떤 값을 넣어야 하는데 해당 데이터가 csv로 존재할 때 사용하기 좋다. csv가 애초에 파싱하기도 쉽고 가벼우니 말이다. 하지만 정말 주의해야할 점은 말 그대로 csv이기 때문에 자료형 적용이 안 된다. 위 결과값에서 보면 알겠지만 응당 int로 됐어야 할 price가 문자열로 돼있는 걸 확인할 수 있을 것이다. 해당 부분을 주의해서 사용하면 된다.

Comments