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

파이썬 정규식(re)으로 문자열에서 가장 많이 등장하는 숫자 찾는 방법

이 튜토리얼에서는 정규식을 활용해 문자열에서 가장 자주 등장하는 숫자를 찾는 방법을 알아봅니다. 파이썬의 re 모듈과 collections 모듈을 함께 사용하면 몇 줄의 코드로 간단하게 해결할 수 있습니다.

구현 순서

  • re 모듈과 collections 모듈을 임포트합니다.
  • 숫자가 포함된 문자열을 초기화합니다.
  • 정규식으로 문자열에서 모든 숫자를 추출해 리스트에 저장합니다.
  • collections.Counter로 각 숫자의 등장 횟수를 계산하고, 가장 많이 등장한 숫자를 구합니다.

예제 코드

# 모듈 임포트
import re
import collections

# 숫자가 포함된 문자열 초기화
string = '1222tutorials321232point3442'

# 모든 숫자(0~9)를 찾는 정규식 패턴
regex = r'[0-9]'

# 문자열에서 모든 숫자를 추출
numbers = re.findall(regex, string)

# Counter 객체로 각 숫자의 빈도 계산
counter = collections.Counter(numbers)

# 가장 많이 등장한 숫자 찾기
high_frequency = 0
highest_frequency_number = None
for key in counter.keys():
    if counter[key] > high_frequency:
        high_frequency = counter[key]
        highest_frequency_number = key

print(highest_frequency_number)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

2

코드 설명

정규식 패턴 [0-9]는 한 번에 한 글자씩 숫자를 매칭합니다. 따라서 위 예제에서는 연속된 숫자라도 개별 숫자로 분리되어 계산됩니다. 만약 여러 자리 숫자를 하나의 단위로 세고 싶다면 패턴을 [0-9]+ 또는 \d+로 변경하면 됩니다.

re.findall()은 패턴과 일치하는 모든 부분을 리스트로 반환하고, collections.Counter는 리스트의 각 요소별 등장 횟수를 딕셔너리 형태로 저장합니다. 이후 반복문에서 각 숫자의 빈도를 비교하여 최대 빈도를 가진 숫자를 찾아냅니다.

더 간단한 방법: most_common() 활용하기

Counter 객체의 most_common() 메서드를 사용하면 반복문 없이 한 줄로 결과를 얻을 수 있습니다.

most_common_number, count = counter.most_common(1)[0]
print(most_common_number)  # 출력: 2

마무리

이처럼 정규식과 Counter를 조합하면 문자열 데이터 속 숫자의 분포를 손쉽게 분석할 수 있습니다. 로그 파일 처리, 데이터 전처리 등 다양한 상황에서 유용하게 활용해 보세요. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨주세요.