본문 바로가기
Programming Languages/Python

Chapter 13. 문자열 정리

by 더 이프 2023. 3. 20.
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']