CS/Python

[Python] 주어진 문자열이 알파벳/숫자로만 구성되었는지 확인해보기

Tigris 2022. 4. 20. 01:00

파이썬에서 주어진 문자열이 알파벳, 숫자, 혹은 알파벳과 숫자로 구성되어있는지 확인하는 메소드는 다음과 같습니다.

문자 판별

isalpha() 메소드를 이용하여 주어진 문자열이 알파벳으로만 구성되어있는지 판별할 수 있습니다.

name = "Tom" 
print(name.isalpha()) # True 

name = "Tom Holland" 
print(name.isalpha()) # False (공백 포함)

name = "Tom1Holland2" 
print(name.isalpha()) # False (숫자 포함)

숫자 판별

숫자 판별의 경우 문자 판별에 비해 세분화된 메소드가 제공됩니다.

  1. isdecimal() 메소드를 활용하면 문자열이 int로 변환 가능한지 판별할 수 있습니다.
  2. isdigit() 메소드를 활용하면 문자열이 숫자의 형태인지 판별할 수 있습니다.
  3. isnumeric() 메소드를 활용하면 문자열이 숫자값을 표현하는 형태인지 판별할 수 있습니다.
number = "2810"
print(number.isdecimal(), number.isdigit(), number.isnumeric())
# True, True, True

number = "3²"
print(number.isdecimal(), number.isdigit(), number.isnumeric())
# False, True, True

number = "½"
print(number.isdecimal(), number.isdigit(), number.isnumeric())
# False, False, True

isdecimal() 메소드에 비해 isdigit(), isnumeric() 메소드의 경우 선뜻 이해하기 어려워보입니다. 조금 더 풀어 설명해보면

  • isdigit() 메소드는 문자열을 구성하는 각 문자들이 숫자여야 True를 반환합니다.
  • isnumeric() 메소드는 문자열을 구성하는 각 문자들이 숫자값의 표현일 때도 True를 반환합니다.

위 예에서 3²의 경우 각각의 문자(3과 ²)가 숫자이므로 isdigit()과 isnumeric()의 결과가 True일 것입니다. 하지만 ½은 숫자는 아니지만 숫자를 표현하는 문자이므로 isdigit()은 False를, isnumeric()은 True를 반환할 것입니다.

문자 + 숫자 판별

isalnum() 메소드를 이용하면 주어진 문자열이 알파벳과 숫자로만 이루어졌는지 판별할 수 있습니다. 이 때 숫자의 식별은 isnumeric() 메소드를 기준으로 합니다.

name_number = "ab½"
print(name_number.isalnum())  # True

잘못된 내용, 오타, 부정확한 문장 등 어떤 피드백이든 환영합니다. 감사합니다.


References