csv/usecsv.py
# csv/usecsv.py
# 파일 오픈 함수
import csv, os, re
def opencsv(filename): # 파일 읽어와서 리스트로 리턴해주는 함수
f = open(filename, 'r')
reader = csv.reader(f)
output = []
for i in reader:
output.append(i)
return output
# 파일 쓰기 함수
def writecsv(filename, the_list):
# 파일 읽을때 사용 : with open
with open(filename, 'w', newline='') as f:
a = csv.writer(f, delimiter=',') # 구분자
a.writerows(the_list) # 한 줄씩 저장
# 문자 리스트 -> 실수 리스트 변환
# a = [['1','2','3'],['2','3',5']]
# b = switch(a)
# b = [[1.0,2.0,3.0],[2.0,3.0,5.0]]
def switch(listName):
for i in listName:
for j in i:
try:
i[i.index(j)] = float(re.sub(',', '', j)) # 콤마(,) 를 빈 값( ) 으로 변환
except:
pass
return listName
csv/ex1.py
# csv/ex1.py
import os, re
import usecsv as us
# os.chdir(r'C:\Python\crawling\csv\data')
os.chdir(r'.\data')
total = us.opencsv('popSeoul.csv')
for i in total[:5]:
print(i)
newPop = us.switch(total)
for i in newPop[:5]:
foreign = 0
try:
foreign = round(i[2] / (i[1] + i[2]) * 100, 1)
print(i[0], foreign)
except:
pass
new = [['구','한국인','외국인','외국인 비율(%)']]
for i in newPop:
try:
foreign = round(i[2] / (i[1] + i[2]) * 100, 1)
if foreign > 3:
# new.append(i[0], i[1], i[2], foreign)
new.append([i[0], i[1], i[2], foreign])
except:
pass
us.writecsv('nowPop2.csv', new)
ex3.py
부산의 크기가 150이 넘거나 5억 이상인 리스트 저장
-> over150+high50000.csv
csv/ex3.py
# csv/ex3.py
import os, re
import usecsv as uc
os.chdir(r'.\data')
apt = uc.switch(uc.opencsv('apt_202210.csv'))
new_list = []
for i in apt:
try:
# 부산의 크기가 150이 넘거나 5억 이상인 리스트 저장
if re.match('부산광역시', i[0]):
if i[5] >= 150:
new_list.append([i[0], i[4], i[-4]])
elif i[-7] >= 50000:
new_list.append([i[0], i[4], i[-4]])
except:
pass
print(len(new_list))
uc.writecsv('over120_lower300003.csv', new_list)