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

Python에서 문장의 단어 개수 세기: 3가지 실전 방법 완벽 정리

이 글에서는 Python 프로그램으로 주어진 문장(문자열)에 포함된 단어의 개수를 세는 다양한 방법을 알아봅니다.

문제 정의

문제: 하나의 문자열이 주어졌을 때, 해당 문자열 안에 몇 개의 단어가 있는지 개수를 구해야 합니다.

예를 들어 "Tutorials point is a learning platform"이라는 문장이 있다면, 이 문장에는 총 6개의 단어가 포함되어 있습니다. 이를 구현하는 대표적인 세 가지 접근법을 살펴보겠습니다.

방법 1 — split() 함수 사용하기

파이썬의 split() 함수는 문자열을 지정한 구분자(delimiter)를 기준으로 잘라 리스트 형태로 반환합니다. 구분자를 따로 지정하지 않으면 기본값으로 공백(space)이 사용되므로, 별도 설정 없이도 문장을 단어별로 분리할 수 있습니다.

예제 코드

test_string = "Tutorials point is a learning platform"
# 원본 문자열 출력
print("원본 문자열 : " + test_string)
# split() 함수를 사용해 단어 개수 계산
res = len(test_string.split())
# 총 단어 수 출력
print("문자열 내 단어 개수 : " + str(res))

실행 결과

원본 문자열 : Tutorials point is a learning platform
문자열 내 단어 개수 : 6

len() 함수가 분리된 리스트의 요소 개수, 즉 단어의 개수를 그대로 반환하기 때문에 가장 간단하고 직관적인 방법입니다.

방법 2 — 정규식(regex) 모듈 사용하기

re 모듈의 findall() 함수를 활용하면 더 유연하게 단어를 추출할 수 있습니다. 정규 표현식 r'\w+'은 하나 이상의 연속된 알파벳·숫자·언더스코어 문자를 의미하며, 이 패턴과 일치하는 모든 단어를 리스트로 가져와 개수를 셉니다.

예제 코드

import re

test_string = "Tutorials point is a learning platform"
# 원본 문자열 출력
print("원본 문자열 : " + test_string)
# 정규식(findall()) 함수를 사용해 단어 개수 계산
res = len(re.findall(r'\w+', test_string))
# 총 단어 수 출력
print("문자열 내 단어 개수 : " + str(res))

실행 결과

원본 문자열 : Tutorials point is a learning platform
문자열 내 단어 개수 : 6

정규식 방식은 탭이나 여러 개의 연속된 공백 등 비정형적인 공백 처리에도 강건하게 동작한다는 장점이 있습니다.

방법 3 — sum() + strip() + split() 함수 조합 사용하기

이 방법은 문장의 모든 단어를 하나씩 검사하여, 실제로 알파벳으로 구성된 단어만 골라 합산하는 방식입니다. strip(string.punctuation)으로 각 단어 앞뒤의 문장부호(마침표, 쉼표 등)를 제거한 뒤, isalpha()로 알파벳 여부를 확인하고 sum()으로 개수를 더합니다.

예제 코드

import string

test_string = "Tutorials point is a learning platform"
# 원본 문자열 출력
print("원본 문자열 : " + test_string)
# sum() + strip() + split() 함수 조합 사용
res = sum([i.strip(string.punctuation).isalpha()
           for i in test_string.split()])
# 총 단어 수 출력
print("문자열 내 단어 개수 : " + str(res))

실행 결과

원본 문자열 : Tutorials point is a learning platform
문자열 내 단어 개수 : 6

모든 변수는 지역 스코프(local scope) 내에서 선언되며, 위 코드에서 그 참조를 확인할 수 있습니다.

마무리

이번 글에서는 파이썬에서 문장의 단어 개수를 세는 세 가지 방법을 배웠습니다. 상황에 따라 적합한 방법을 선택하면 됩니다.

  • split(): 가장 간단하고 빠르게 구현할 수 있는 기본 방법
  • 정규식(findall()): 불규칙한 공백이나 복잡한 패턴 처리에 유리
  • sum()+strip()+split(): 문장부호를 제거하고 순수한 단어만 정확히 세고 싶을 때 유용

입력 데이터의 형태와 요구 사항에 맞는 방법을 활용해 보시기 바랍니다.