[๐Ÿ—„Database] Handling CSV data with python

์—ฌ์ฃผ๋งยท2020๋…„ 12์›” 1์ผ
0

WECODE

๋ชฉ๋ก ๋ณด๊ธฐ
7/10
post-custom-banner

CSV๋Š” ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ๊ฐ„๋‹จํ•œ ๊ฐœ๋…์ด์ง€๋งŒ ์•ž์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ด์„œ ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค.

1.CSV๋ž€?

SCV๊ฐ€ ์•„๋‹ˆ๋‹ค..์ด๊ฑฐ ์•„๋Š”์‚ฌ๋žŒ.. ๋‹น์‹ ์€ ๋‚ด ๋™๋…„๋ฐฐ(๊ณ ์ธ๋ฌผ1)

Comma Seperated Value์˜ ์ค„์ž„๋ง๋กœ ๋‹ค์–‘ํ•œ txt,jpegmpng๊ฐ™์ด ํŒŒ์ผ์ข…๋ฅ˜์˜ ํ•˜๋‚˜์ด๋‹ค. CSV๋ฐ์ดํ„ฐ๋Š” ์ฝค๋งˆ(,)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ญ๋ชฉ์„ ๊ตฌ๋ถ„ํ•ด ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
(์ฝค๋งˆ๋กœ ๊ตฌ๋ถ„์ด ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์—‘์…€์ฒ˜๋Ÿผ ์ฝ๊ณ , ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค => ํ…Œ์ด๋ฒŒ ํ˜•ํƒœ๋กœ ๋œ ์ž๋ฃŒ, ํ…์ŠคํŠธ๋ฅผ ์ €์žฅํ• ๋•Œ ๋งŽ์ด ์‚ฌ์šฉ)
HTTP์—์„œ ์“ฐ์ธ๋˜ JSON๋ฐ์ดํ„ฐ๋ณด๋‹ค ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋„ ์ ๊ณ  ๋ฒ”์šฉํ˜•์‹์œผ๋กœ์ธํ•ด ์ž๋ฃŒ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์ƒํ™ฉ์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.
ํŒŒ์ผ์„ ์—ด์–ด๋ณด๋ฉด ์ด๋Ÿฐ์‹์œผ๋กœ ๋˜์–ด์žˆ๋‹ค. column์€ ,๋กœ ๊ตฌ๋ถ„ํ•˜๊ณ  ํ•œ ์ค„์ด row๊ฐ€ ๋œ๋‹ค. row๋ฅผ field๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค.

2.CSVํŒŒ์ผ์˜ ์ƒ์„ฑ

1.๋นˆํŒŒ์ผ์„ ์—ฐ๋‹ค
2.์œ„ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.
3..csvํ™•์žฅ์ž๋กœ ์ €์žฅํ•œ๋‹ค

csvํŒŒ์ผ์€ ํŒŒ์ผ ์ž‘์„ฑ์ž์˜ ์˜๋„๋Œ€๋กœ ์ž์œ ์ž์žฌ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ์‹œ[์Šคํƒ€๋ฒ…์Šค]

menu,category,product
์Œ๋ฃŒ,์ฝœ๋“œ ๋ธŒ๋ฃจ ์ปคํ”ผ,๋‚˜์ดํŠธ๋กœ ๋ฐ”๋‹๋ผ ํฌ๋ฆผ
์Œ๋ฃŒ,์ฝœ๋“œ ๋ธŒ๋ฃจ ์ปคํ”ผ,์ œ์ฃผ ๋น„์ž๋ฆผ ์ฝœ๋“œ
์Œ๋ฃŒ,์ฝœ๋“œ ๋ธŒ๋ฃจ ์ปคํ”ผ,์ฝ”์ฝ”๋„› ํ™”์ดํŠธ ์ฝœ๋“œ ๋ธŒ๋ฃจ
์Œ๋ฃŒ,์ฝœ๋“œ ๋ธŒ๋ฃจ ์ปคํ”ผ,๋‚˜์ดํŠธ๋กœ ์‡ผ์ฝœ๋ผ ํด๋ผ์šฐ๋“œ
์Œ๋ฃŒ,์ฝœ๋“œ ๋ธŒ๋ฃจ ์ปคํ”ผ,์ฝœ๋“œ ๋ธŒ๋ฃจ ๋ชฐํŠธ
์Œ๋ฃŒ,๋ธŒ๋ฃจ๋“œ ์ปคํ”ผ,์•„์ด์Šค ์ปคํ”ผ
์Œ๋ฃŒ,๋ธŒ๋ฃจ๋“œ ์ปคํ”ผ,์˜ค๋Š˜์˜ ์ปคํ”ผ
์Œ๋ฃŒ,์—์Šคํ”„๋ ˆ์†Œ,์—์Šคํ”„๋ ˆ์†Œ ์ฝ˜ ํŒŒ๋‚˜
์Œ๋ฃŒ,์—์Šคํ”„๋ ˆ์†Œ,์—์Šคํ”„๋ ˆ์†Œ ๋งˆํ‚ค์•„๋˜
์Œ๋ฃŒ,์—์Šคํ”„๋ ˆ์†Œ,์นดํŽ˜ ์•„๋ฉ”๋ฆฌ์นด๋…ธ
์Œ๋ฃŒ,ํ”„๋ผํ‘ธ์น˜๋…ธ,๋”๋ธ” ์—์Šคํ”„๋ ˆ์†Œ ์นฉ ํ”„๋ผํ‘ธ์น˜๋…ธ
์Œ๋ฃŒ,ํ”„๋ผํ‘ธ์น˜๋…ธ,๋ธ”๋ž™ ์™€ํ”Œ์นฉ ํฌ๋ฆผ ํ”„๋ผํ‘ธ์น˜๋…ธ
์Œ๋ฃŒ,ํ”„๋ผํ‘ธ์น˜๋…ธ,ํ”ผ์Šคํƒ€์น˜์˜ค ํฌ๋ฆผ ํ”„๋ผํ‘ธ์น˜๋…ธ 

์œ„ ํŒŒ์ผ์„ ์—‘์…€๋กœ ์—ด์–ด๋ณด๋ฉด
์ด๋ ‡๊ฒŒ ๋‚˜ํƒ€๋‚œ๋‹ค

๊ทผ๋ฐ.. ์Œ๋ฃŒ ๋ฐ˜๋ณต ๊ท€์นž์•„....๐Ÿค”

์ด๊ฒฝ์šฐ ๊ฐ’์ด ์—†์–ด๋„ ์ฝค๋งˆ(,)๋งŒ ์žˆ์œผ๋ฉด ๋ถ„๋ฆฌ๋œ ์นธ์œผ๋กœ ์ธ์‹ํ•œ๋‹ค๋Š” csv์†์„ฑ์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

menu,category,product
์Œ๋ฃŒ,์ฝœ๋“œ ๋ธŒ๋ฃจ ์ปคํ”ผ,๋‚˜์ดํŠธ๋กœ ๋ฐ”๋‹๋ผ ํฌ๋ฆผ
,,์ œ์ฃผ ๋น„์ž๋ฆผ ์ฝœ๋“œ
,,์ฝ”์ฝ”๋„› ํ™”์ดํŠธ ์ฝœ๋“œ ๋ธŒ๋ฃจ
,,๋‚˜์ดํŠธ๋กœ ์‡ผ์ฝœ๋ผ ํด๋ผ์šฐ๋“œ
,,์ฝœ๋“œ ๋ธŒ๋ฃจ ๋ชฐํŠธ
,๋ธŒ๋ฃจ๋“œ ์ปคํ”ผ,์•„์ด์Šค ์ปคํ”ผ
,,์˜ค๋Š˜์˜ ์ปคํ”ผ
,์—์Šคํ”„๋ ˆ์†Œ,์—์Šคํ”„๋ ˆ์†Œ ์ฝ˜ ํŒŒ๋‚˜
,,์—์Šคํ”„๋ ˆ์†Œ ๋งˆํ‚ค์•„๋˜
,,์นดํŽ˜ ์•„๋ฉ”๋ฆฌ์นด๋…ธ
,ํ”„๋ผํ‘ธ์น˜๋…ธ,๋”๋ธ” ์—์Šคํ”„๋ ˆ์†Œ ์นฉ ํ”„๋ผํ‘ธ์น˜๋…ธ
,,๋ธ”๋ž™ ์™€ํ”Œ์นฉ ํฌ๋ฆผ ํ”„๋ผํ‘ธ์น˜๋…ธ
,,ํ”ผ์Šคํƒ€์น˜์˜ค ํฌ๋ฆผ ํ”„๋ผํ‘ธ์น˜๋…ธ

๊ทธ๋Ÿผ

์‹ฌํ”Œํ•˜๊ฒŒ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค!

3. ํŒŒ์ด์ฌ์—์„œ CSV์ฝ๊ธฐ

๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค. ํŒŒ์ด์ฌ์—๋„ CSV๋ฅผ ์ฝ๊ธฐ์œ„ํ•œ ๋ชจ๋“ˆ์ด ์žˆ๋‹ค.
๋Œ€ํ‘œ์ ์œผ๋กœ csv.reader(),csv.DictReader()๋ผ๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ์–ด์„œ ์•„์ฃผ ์‰ฝ๊ฒŒ csv๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.

import csv #csvํŒŒ์ผ์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ import 

with open('wecode.csv') as csv_file:
    rows = csv.reader(csv_file, delimiter = ',')
	for row in rows:
		print(row)

with open (file_name) as (file_name): ๊ตฌ๋ฌธ์„ ์ด์šฉํ•˜๋ฉด ์™ธ๋ถ€ ํŒŒ์ผ์„ ์—ฐ ์ƒํƒœ๋กœ ์ž‘์—…ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. csv.reader ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด ํŒŒ์ผ ๋‚ด๋ถ€์˜ ๋ชจ๋“  ํ–‰์„ rows์ด๋ผ๋Š” ๋ณ€์ˆ˜์— ๋‹ด์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํ–‰์„ ํ•œ ์ค„ ํ•œ ์ค„ ์ฝ์œผ๋ฉด์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ for ๋ฌธ์„ ํ™œ์šฉํ•œ๋‹ค

(์ข€๋” ์ž์„ธํ•œ๊ฑด ๋‹ค์Œ์— ๊ณ„์†~!)

profile
๐ŸŒฑBackend Developer๐Ÿ‘ฉโ€๐Ÿ’ป
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€