문자열이 주어졌을 때, 그 안에 포함된 숫자와 문자(알파벳)의 총 개수를 계산해야 하는 경우가 자주 있습니다. 이번 글에서는 파이썬을 이용해 이 문제를 간단하게 해결하는 방법을 알아보겠습니다.
예시
입력 -
s = "tutorialsP0int"
출력 -
Letters: 13 Digits: 1
설명 -
주어진 문자열에 포함된 문자는 총 13개, 숫자는 총 1개입니다.
문제 해결 접근 방법
주어진 문자열에서 문자와 숫자의 총 개수를 계산하려면, 먼저 문자열 전체를 반복(iteration)하며 탐색해야 합니다. 탐색 과정에서 알파벳을 만나면 문자 카운트를 증가시키고, 숫자를 만나면 숫자 카운트를 증가시키면 됩니다.
입력 문자열을 받습니다.
문자열 전체를 반복하면서, 숫자를 발견하면 숫자 카운트를 1씩 증가시키고, 문자를 발견하면 문자 카운트를 1씩 증가시킵니다.
반복이 끝나면 문자와 숫자의 개수를 결과로 반환합니다.
구현 예제
파이썬에서는 문자열 메서드인 isdigit()과 isalpha()를 활용하면 매우 직관적으로 구현할 수 있습니다.
str = "tutorialsP0int"
digit = letter = 0
for ch in str:
if ch.isdigit():
digit = digit + 1
elif ch.isalpha():
letter = letter + 1
else:
pass
print("Letters:", letter)
print("Digits:", digit)실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
Letters: 13 Digits: 1
코드 설명
위 코드의 동작 원리를 단계별로 살펴보겠습니다.
digit = letter = 0: 숫자와 문자의 개수를 저장할 변수를 각각 0으로 초기화합니다.for ch in str:: 문자열의 각 문자를 하나씩 순회합니다.ch.isdigit(): 현재 문자가 숫자(0~9)인지 확인하고, 참이면digit값을 1 증가시킵니다.ch.isalpha(): 현재 문자가 알파벳인지 확인하고, 참이면letter값을 1 증가시킵니다.else: pass: 숫자도 문자도 아닌 특수문자나 공백은 무시하고 넘어갑니다.
추가 팁
만약 숫자와 문자 외의 나머지 문자(특수문자, 공백 등)의 개수도 함께 세고 싶다면, else 블록에 별도의 카운터를 추가하면 됩니다. 또한 파이썬 내장 함수 sum()과 제너레이터 표현식을 사용하면 다음과 같이 한 줄로도 구현할 수 있습니다.
s = "tutorialsP0int"
letters = sum(ch.isalpha() for ch in s)
digits = sum(ch.isdigit() for ch in s)
print(f"Letters: {letters}")
print(f"Digits: {digits}")이처럼 파이썬의 문자열 메서드를 활용하면 문자열 분석 작업을 손쉽게 처리할 수 있습니다.