ProgrammingLang/python

[python] 18. CSV 파일 다루기

jinkwon.kim 2018. 11. 22. 22:06
728x90
반응형

[python] 18. CSV 파일 다루기




1. CSV 이란?

  - 구조화된 텍스트 파일

  - comma seperate value의 약어 이다.

  - 값의 구분이 탭"\t", 콤마",", 수직바"|"와같은 문자를 구분자로 사용한다.


2. 구조화된 텍스트 파일의 종류 

  1) JSON 파일

  2) XML 파일

  3) HTML 파일

  4) YAML

  5) CSV



3. CSV 특징

  1) 콤마로 구분된다. 

  2) 줄바꿈 문자가 운영체제 마다 다르다.

    - Linux/Max : \n

    - window    : \r\n

  3) 컬럼 이름이 첫번째 라인에 온다.

  

4. python 에서 CSV 다루는 방법

  1) CSV 를 list로 변환하여 다룬다.

  2) CSV 를 Dictionary로 변환하여 다룬다.

  

5. 필요 모듈

  - CSV 모듈 필요 

  - 코어 모듈이기 때문에 따로 설치할 필요가 없다. 

  

5. [리스트] CSV를 리스트로 읽어 들이기 

  1) 읽기 함수

    - csv.reader()

    - 한번에 읽지 않고 한줄씩 읽어 들인다.

    - 대용량 파일을 처리 할때 좋다.

    - 아래와 같은 구조로 읽어진다.

       


  2) 테스트 코드

    (1) for문을 사용한 코드

a_list = []
f = open('filename.csv', 'r')
reader = csv.reader(f)
for row in reader:
a_list.append(row)
f.close()  

    (2) with 사용 코드

with open('filename.csv', 'r') as f:
reader = csv.reader(f)
a_list = list(reader)


6. [리스트] 리스트를 CSV 형태로 쓰기 

  1) 쓰기 함수

    - csv.writer()

> write용 객체를 얻는다.

    - writerow()

> list를 CSV 형태로 바꿔서 Write한다.

  2) 테스트 코드

    - writerow() 함수를 사용하여 라인단위로 쓴다

    - 윈도우에서는 줄바꿈에 특수문자가 2개가 들어가기 때문에 newlint=''를 넣어줘야한다.

writerow()함수 사용시 문자열 끝에 \n이 들어가는데 윈도는 \n이 기본적으로 들어가기 때문에

newline은 ''로하여 \n 한번더 안들어가게 해야한다. 

    Ex)  

with open('filename.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['spam', 'egg', 'hacon', 'ham'])
writer.writerow(['1', '2', '3', '4'])

   

7. [Dictionary] CSV를 Dictionary로 읽어 들이기 

  1) 읽기 함수

    - csv.DictReader()

  2) 테스트 코드

with open('filename.csv', 'r') as f:
reader = csv.DicReader(f)
for row in reader:
print(row)
print(row['key1'], row['key2'] , row['key'])

    * 참고 사항

  - reader 에서 반환하는 값인 row의 형태는 python2, python3와 다르다. 

  - python2에서는 딕셔너리 형태로 row에 들어간다. 

  - python3에서는 OrderdDict형태(리스트레 튜플값을 가진 형태)로들어 간다.

        OrderdDict형태란 순서가 없는 딕셔너리에 대해서 순서를 보장해주는 형태이다.

        사용법은 Dictionary와 동일하게 사용하면된다

   


8. [Dictionary] Dictionary를 CSV 형태로 쓰기 

  - key의 순서에 따라 형태가 달라지기 때문에 적절히 잘 파일에 써야한다.

  

728x90
반응형

'ProgrammingLang > python' 카테고리의 다른 글

[python] 20. scraper  (0) 2018.11.27
[python] 19. python Open API 와 JSON  (5) 2018.11.26
[python] 17. python으로 엑셀 다루기  (7) 2018.11.22
[python] 16. class 와 객체  (0) 2018.11.21
[python] 15. 예외처리와 로깅  (0) 2018.11.17