csv 파일이란?
csv 파일이란 comma separated values 의 약자로 데이터를 저장하는 파일 형식 중 하나입니다. 이름에서 예측할 수 있듯이 record에 저장되는 값들이 ',(comma)'를 이용하여 나열되어 있습니다.
csv파일 읽기
csv파일은 python에서 built-in으로 제공되는 csv 모듈을 사용하여 조작할 수 있습니다만, csv파일도 파일형식이기 때문에 해당 모듈없이도 open() 구문을 사용하여 일반 파일처럼 읽고 쓸 수 있습니다.
test.csv 내용 |
a,b,c 1,2,3 4,5,6 |
1. open() 사용하기
import os
file_name = 'test.csv'
if os.path.exists(file_name):
f = open(file_name)
...
f.close()
위의 코드 중 '...'으로 생략된 부분에 원하는 작업을 진행할 수 있습니다.
> 한 줄 읽기
l = f.readline()
print(l)
line = l.split(',')
print(line)
line = l.strip().split(',')
print(line)
output:
a,b,c
['a', 'b', 'c\n']
['a', 'b', 'c']
파일을 연 후, 한 줄을 읽고 print 구문을 이용하면 a,b,c가 출력되지만, 실제 l에는 'a,b,c\n' 가 저장되어 있습니다. 이를 확인하기 가장 쉬운 방법은 strip()을 이용하여 실제로 어떤 값들로 구성되어있는 지 확인하는 것입니다. output의 두 번째 줄처럼 단순히 ',(comma)' 기준으로 문장을 나누면, 마지막 값에는 줄바꿈 문자가 들어가 있음을 알 수 있습니다. 이를 제거하기 위해서는 strip()을 사용해야합니다.
> 한 줄씩 읽기
lines = []
while(True):
line = f.readline()
if not line:
break;
lines += [line.strip().split(',')]
print(lines)
output:
[['a', 'b', 'c'], ['1', '2', '3'], ['4', '5', '6']]
> 한 번에 읽기
lines = csv.readlines(f)
print(lines)
output:
['a,b,c\n', '1,2,3\n', '4,5,6\n']
당연히 해당 코드는 close() 대신 with open() 코드로도 대체 가능합니다.
2. csv 모듈 사용하기
제가 애용하는 geeksforgeeks에 있는 내용을 포함하여 작성하였습니다
www.geeksforgeeks.org/working-csv-files-python/
# importing csv module
import csv
# csv file name
file_name = "test.csv"
# initializing the titles and rows list
fields = []
rows = []
# reading csv file
with open(file_name, 'r') as csvfile:
# creating a csv reader object
csvreader = csv.reader(csvfile)
# extracting field names through first row
fields = next(csvreader)
# extracting each data row one by one
for row in csvreader:
rows.append(row)
print(rows)
output:
[['1', '2', '3'], ['4', '5', '6']]
코드 상에서 첫 줄은 field 이름들로 먼저 제거했기 때문에 첫줄을 제외한 값들만 들어있음을 알 수 있습니다.
'공부 > 코딩 개념정리' 카테고리의 다른 글
[C++] String형을 int형으로 변환하기 (0) | 2021.11.13 |
---|---|
[c 언어] 포인터 이해/ 포인터 매개변수 사용하기 (0) | 2021.05.01 |
[C++] 1차원, 2차원 벡터 초기화 (1D 2D vector initialization) (0) | 2021.03.17 |
[프로그래밍] 메모이제이션 이해하기 (0) | 2021.01.01 |
[shell programming] awk linux 명령어 이해하기 (0) | 2020.12.29 |
댓글