Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python) 문자열 리스트에서 숫자만 추출하는 방법

파이썬으로 데이터를 다루다 보면 요소가 문자와 숫자가 일정한 패턴으로 섞여 있는 리스트를 만나게 됩니다. 이런 경우 문자열에서 숫자 부분만 분리해 내면 이후 계산 작업에 활용할 수 있습니다. 이 글에서는 파이썬 문자열 리스트에서 숫자를 추출하는 대표적인 두 가지 방법을 소개합니다.

split() 함수 활용하기

split() 함수는 지정한 구분자를 기준으로 문자열을 나누는 기능을 합니다. 아래 예제의 리스트 요소들은 문자와 숫자 사이에 하이픈(-)이 구분자로 들어 있으므로, split()으로 문자열을 나눈 뒤 두 번째 부분(인덱스 1)을 가져오면 숫자만 얻을 수 있습니다.

예제 코드

listA = ['Mon-2', 'Wed-8', 'Thu-2', 'Fri-7']

# 주어진 리스트
print("Given list : " + str(listA))

# 숫자 추출
num_list = [int(i.split('-')[1]) for i in listA]

# 결과 출력
print("List only with numbers : ", num_list)

실행 결과

Given list : ['Mon-2', 'Wed-8', 'Thu-2', 'Fri-7']
List only with numbers : [2, 8, 2, 7]

map()과 isnumeric() 활용하기

두 번째 방법은 각 요소를 하나씩 살펴보며 숫자에 해당하는 문자만 골라내는 방식입니다. isnumeric() 메서드로 문자가 숫자인지 판별하고, map() 함수를 사용해 모든 요소에 동일한 처리를 반복 적용합니다. 이 방식은 하이픈 같은 특정 구분자에 의존하지 않기 때문에 더 유연하게 활용할 수 있다는 장점이 있습니다.

예제 코드

listA = ['Mon-2', 'Wed-8', 'Thu-2', 'Fri-7']

# 주어진 리스트
print("Given list : " + str(listA))

# 숫자 추출
num_list = list(map(lambda sub: int(''.join(
[i for i in sub if i.isnumeric()])), listA))

# 결과 출력
print("List only with numbers : ", num_list)

실행 결과

Given list : ['Mon-2', 'Wed-8', 'Thu-2', 'Fri-7']
List only with numbers : [2, 8, 2, 7]

정리

구분자가 명확히 정해져 있다면 split() 방식이 코드가 간결하고 직관적입니다. 반면 구분자 없이 문자와 숫자가 섞여 있는 경우에는 isnumeric()으로 숫자만 필터링하는 방식이 더 안정적으로 동작합니다. 상황에 맞는 방법을 선택해 사용하시기 바랍니다.