CSV & 고급 파이썬

Date:     Updated:

카테고리:

태그:

CSV

  • name, age, address, gender
  • Comma Separated Value
  • 각 열이 특정한 의미를 가짐
# moves.csv
# 국문 제목, 영문 제목, 개봉 연도
다크나이트, The Dark Knight, 2008
겨울왕궁, Frozen, 2013
슈렉, Shrek, 2001
슈퍼맨, Superman, 1978


# moves.csv
# 다른 구분 문자(delimiter)도 사용 가능
다크나이트| The Dark Knight| 2008
겨울왕궁| Frozen| 2013
슈렉| Shrek| 2001
슈퍼맨| Superman| 1978

image


데이터에 ‘,’가 포함되어 있는 경우

# movies.csv
# 큰따옴표("")를 이용하여 데이터를 감싼다.
먹고 기도하고 사랑하라, "Eat, Pray, Love", 2010
"헬로우, 뉴욕", "Hello, New York", 2013


# 같은 데이터를 저장하는데 용량을 적게 소모함
# movies.csv
아이언맨,Iron Man,2008
겨울왕국,Frozen,2013

# movies.json
[{"ko": "아이언맨", "en": "Iron Man", "year": 2008},
{"ko": "겨울왕국", "en": "Frozen", "year": 2013}]

CSV의 단점

# movies.csv
# 데이터 오염에 취약함
아이언맨, Iron, Man, 2008
겨울왕국, Frozen, 2013

image


CSV 사용법

import csv

with open('moves.csv') as file:
  reader = csv.reader(file, delimiter=',')

  for row in reader:
    print(row[0])

고급 파이썬

함수를 리턴하는 함수

  • 함수를 리턴값으로 갖는 경우도 있다
  • 함수 내부에서 함수를 리턴하는 방법은, lambda를 사용할 수도 있고, 함수 내에서 def를 또 사용할 수 있다. ``` py def adder(n): def helper(x): return x + n return helper

add_three = adder(3) print(add_three(6)) # 9, 이 때 add_three는 함수 취급 helper의 return값을 가져온다

<br>

### map()
``` py
def get_eng_title(row):
  split = row.split(',')
  return split[1]

eng_titles = [get_eng_title(row) for row in movies]
eng_titles = map(get_eng_title, movies)
eng_titles = map(
  lambda row : row.split(',')[1],
  movies
)


filter()

  • filter()에 들어가는 함수는 boolean값을 가짐 ``` py def starts_with_r(word): return word.startswith(‘r’)

words = [‘real’, ‘man’, ‘rhythm’, …] r_words = filter(starts_with_r, words) ```





Basic 카테고리 내 다른 글 보러가기

댓글 남기기