본문 바로가기
프로그램

[파이썬] 문제 : 문자열에서 '01','02'와 같이 특정 문자 삭제

by 오디세이99 2022. 12. 2.
728x90
반응형

(문제)

파이썬 리스트 특정 문자 "01.", "02." 들 삭제 하고 싶습니다.

list = ['반갑습니다.','01. 안녕하세요', '02. 잘자요','다음에 또 만나요']
이런식으로 문자열로 된 리스트에 01. 02. 숫자들이 끼워져있는 경우가 있는데요.
번호가 10이 넘어갈 때도 있습니다. 그럴 경우 해당  "01.", "02." 들 삭제 하고 싶은데요.
 
삭제하고 난 결과는 
list = ['반갑습니다.','안녕하세요', '잘자요','다음에 또 만나요']
이렇게 만들고 싶습니다.
 
 
(방법)
lst = ['반갑습니다.','01. 안녕하세요', '02. 잘자요','다음에 또 만나요','안녕하세요 13.65kg','10.안녕하세요 13.65kg']

data = []                                      # 정리된 문장 저장용 리스트
for i in range(len(lst)):                     # 문장수만큼 반복
    ss = lst[i]                                # 하나의 문장
    if '.' in ss:                             # 문장에 '.'이 있는지 확인
        if ss.find('.') != len(ss)-1:         # '.'이 있지만 뒤에서 첫번쩨에 있지 않으면(마지막 종료점이 아니면)
            no = ss[:ss.find('.')-1]           # '.' 앞부분이 '10.'과 같은 구조인지 파악 위해 분리
            if no.isnumeric():                 # 분리된 부분이 숫자 형태인지 확인. 숫자형태면 사용하지 않음
                ss = ss[ss.find('.')+1:].strip()      # '.'으로 문장을 분리하고 그 중에서 뒤에 있는 문장사용.strip으로 빈공백 제거
            else:                              # 없어도 되는 부분. ss가 그대로 사용됨. 하지만 코드를 읽을때 혼동을  막기 위함.
                ss = ss                         # 위와 같음
    data.append(ss)                            # 정리된 문장에 추가

print(data)
 

결과

['반갑습니다.', '안녕하세요', '잘자요', '다음에 또 만나요', '안녕하세요 13.65kg', '안녕하세요 13.65kg']
728x90
반응형

댓글