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 (숫자 포함)
숫자 판별
숫자 판별의 경우 문자 판별에 비해 세분화된 메소드가 제공됩니다.
- isdecimal() 메소드를 활용하면 문자열이 int로 변환 가능한지 판별할 수 있습니다.
- isdigit() 메소드를 활용하면 문자열이 숫자의 형태인지 판별할 수 있습니다.
- 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
잘못된 내용, 오타, 부정확한 문장 등 어떤 피드백이든 환영합니다. 감사합니다.