본문 바로가기

Hacks

문자열 안에 있는 숫자를 훼손 없이 추출하는 방법

string_ex = "{{20, 111}, {111}}"에서 숫자를 형태 그대로 추출하는 방법

 

1. 정규문자식을 사용

import re
string_ex = re.findall("\d+", string_ex)

 

findall을 사용하는 방식은 데이터가 많으면 시간이 오래 걸릴 수 있다.

보통 선형의 시간이 소요되지만, 데이터가 많으면 지수 시간이 걸릴 수 있다.

 

2. for문을 사용

number = ""

for data in string_ex:
    if data.isdigit():
        number += data
    else:
        if number != "":
            arr.append(number)
            number = ""

 

3. 숫자 주변에 있는 문자열을 제거한 후 for문을 사용

string_ex = string_ex.replace("{", "").replace("}", "")
number = ""

for data in string_ex:
    if data.isdigit():
        number += data
    else:
        arr.append(number)
        number = ""
arr.append(number) # 마지막에 append 되지 못한 number를 append 해줘야 한다.

 

✔️ 세 가지 방법 모두 결과값은 ['20', '111', '111']