Python - CSV 파일 읽기, 쓰기

CSV(Comma Separated Values)는 아래와 같이 comma로 구분되어 저장된 데이터 형식을 말합니다.

SN, Country, City
1, Korea, Seoul
2, Japanese, Tokyo

파이썬에서 CSV 파일을 읽고 쓰는 방법에 대해서 알아보겠습니다.

1. CSV 파일 읽기

다음과 같이 데이터가 comma로 구분된 CSV 파일이 있습니다.

SN,Country,City
1,Korea,Seoul
2,Japanese,Tokyo

아래와 같이 csv 모듈을 사용하여 comma로 구분된 CSV 파일을 읽을 수 있습니다.

import csv

with open("countries.csv", 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

Output:

['SN', 'Country', 'City']
['1', 'Korea', 'Seoul']
['2', 'Japanese', 'Tokyo']

2. 다른 구분자를 사용하는 CSV 파일 읽기

아래와 같이 , 대신에 스페이스나 Tab과 같은 구분자를 사용하는 CSV 파일이 있을 수 있습니다.

SN Country City
1 Korea Seoul
2 Japanese Tokyo

csv 모듈은 csv.reader(file, delimiter)과 같이 구분자를 인자로 받아, 다른 구분자로 만들어진 CSV 파일을 읽을 수 있습니다.

아래 예제에서는 delimiter=' '로 스페이스를 구분자로 전달하여 위의 CSV 파일을 읽습니다.

import csv

with open("countries2.csv", 'r') as file:
    reader = csv.reader(file, delimiter=' ')
    for row in reader:
        print(row)

Output:

['SN', 'Country', 'City']
['1', 'Korea', 'Seoul']
['2', 'Japanese', 'Tokyo']

3. CSV 파일을 dict로 읽기

리스트가 아닌 key-value 형태의 딕셔너리로 CSV 파일을 읽으려면 아래와 같이 DictReader()를 사용하면 됩니다.

import csv

with open("countries.csv", 'r') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(dict(row))

Output:

{'SN': '1', ' Country': ' Korea', ' City': ' Seoul'}
{'SN': '2', ' Country': ' Japanese', ' City': ' Tokyo'}

4. CSV 형식으로 파일 쓰기 (1)

다음은 CSV 형식으로 파일을 저장하는 예제입니다. header, row 순서로 쓰면 됩니다.

import csv

with open("cities.csv", 'w') as file:
    writer = csv.writer(file)
    writer.writerow(["SN", "City", "Country"])
    writer.writerow(["1", "Seoul", "Korea"])
    writer.writerow(["1", "Tokyo", "Japanese"])

cities.csv 파일을 열어보면 아래와 같이 저장됩니다.

SN,City,Country
1,Seoul,Korea
1,Tokyo,Japanese

5. CSV 형식으로 파일 쓰기 (2)

아래와 같이 모든 데이터가 있는 리스트를 writerows()에 인자로 전달하여 한번에 쓸 수 있습니다.

import csv

csv_rows = [["SN", "City", "Country"], ["1", "Seoul", "Korea"], ["1", "Tokyo", "Japanese"]]

with open("cities.csv", 'w') as file:
    writer = csv.writer(file)
    writer.writerows(csv_rows)

cities.csv 파일을 열어보면 아래와 같이 저장됩니다.

SN,City,Country
1,Seoul,Korea
1,Tokyo,Japanese

6. 구분자 변경하여 CSV 형식으로 파일 쓰기

comma가 아닌 다른 구분자로 CSV 파일을 만들 수 있습니다. 아래와 같이 writer(file, delimiter) 함수에 원하는 구분자를 인자로 전달하면 됩니다.

import csv

with open("cities.csv", 'w') as file:
    writer = csv.writer(file, delimiter=' ')
    writer.writerow(["SN", "City", "Country"])
    writer.writerow(["1", "Seoul", "Korea"])
    writer.writerow(["1", "Tokyo", "Japanese"])

cities.csv 파일을 열어보면 아래와 같이 저장됩니다.

SN City Country
1 Seoul Korea
1 Tokyo Japanese

7. dict로 CSV 파일 쓰기

아래와 같이 key-value 형태의 딕셔너리 객체로 CSV 파일을 만들 수 있습니다.

import csv

with open("cities.csv", 'w') as file:
    header = ["SN", "City", "Country"]
    writer = csv.DictWriter(file, fieldnames=header)

    writer.writeheader()
    writer.writerow({"SN": "1", "City": "Seoul", "Country": "Korea"})
    writer.writerow({"SN": "2", "City": "Tokyo", "Country": "Japanese"})

cities.csv 파일을 열어보면 아래와 같이 저장됩니다.

SN,City,Country
1,Seoul,Korea
2,Tokyo,Japanese
Loading script...
codechachaCopyright ©2019 codechacha