728x90
Chapter 13. 문자열 정리
1. 문자열 정리
⦁ 직접 함수를 만들어 문자열 정리
⦁ replacing, my split 총 2가지 경우의 함수를 정의
a. replacing
# replacing
s = '맞춤형건강클리닉, 건강증진,인천광역시 연수구 함박뫼로 13, 인천광역시 연수구 청학동 465-4, 37.41913159,126.6711606, "치매검진, 당뇨.고혈압 상담 및 검사, 뇌경색.심뇌혈관질환, 정신건강 상담", 09:00,18:00, "일요일, 공휴일", 30,0,5,0,0,0, 검사전날 오후8시 전까지 식사마치고 검사당일 아침 금식, 032-749-8104,맞춤형건강클리닉,032-749-8122,인천광역시 연수구 보건소,2021-10-25,3520000,인천광역시 연수구'
# 큰따옴표내에 쉼표를 +로 변경하여 큰따옴표내 쉼표 구분
def replacing(s):
start = False
s_list=list(s)
for i, c in enumerate(s_list):
if start==False and c=='"':
start = True
elif start == True and c==',':
s_list[i]='+'
elif start == True and c=='"':
start = False
return ''.join(s_list)
print(replacing(s))
# 결과값
맞춤형건강클리닉, 건강증진, 인천광역시 연수구 함박뫼로 13, 인천광역시 연수구 청학동 465-4, 37.41913159, 126.6711606, "치매검진+ 당뇨.고혈압 상담 및 검사+ 뇌경색.심뇌혈관질환+ 정신건강 상담", 09:00,18:00, "일요일+ 공휴일", 30,0,5,0,0,0, 검사전날 오후8시 전까지 식사마치고 검사당일 아침 금식, 032-749-8104, 맞춤형건강클리닉, 032-749-8122, 인천광역시 연수구 보건소, 2021-10-25,3520000, 인천광역시 연수구
b. my split
# my split
# 큰따옴표내 쉼표를 구분하기 위해 큰따옴표내의 글을 한 묶음으로 설정
def my_split(s):
block_start = False
start_index = 0
ret_list=[]
for i, c in enumerate(s):
if block_start==False:
if c==',':
ret_list.append(s[start_index:i])
start_index=i+1
elif c=='"':
block_start=True
start_index = i
else:
if c=='"':
block_start=False
if s[-1]!=',':
ret_list.append(s[start_index:])
return ret_list
csv_data=[]
with open('전국건강증진센터표준데이터.csv', encoding='cp949') as f:
for line in f:
csv_data.append(my_split(line))
print(csv_data[0])
# 결과값
['건강증진센터명', '건강증진센터구분', '소재지도로명주소', '소재지지번주소', '위도', '경도', '건강증진업무내용', '운영시작시각', '운영종료시각', '휴무일정보', '건물면적', '의사수', '간호사수', '사회복지사수', '영양사수', '기타인력현황', '기타이용안내', '운영기관전화번호', '운영기관명', '관리기관전화번호', '관리기관명', '데이터기준일자', '제공기관코드', '제공기관명\n']