파이썬(Python)에서 단어가 영어인지 아닌지 확인하기
이번 포스팅에서는 Python에서 특정 String이 영어인지 아닌지를 구별하는 몇 가지 방법에 대해서 소개해 드리겠습니다.
1. Using isalpha method
Python에서는 string 클래스는 isalpha라고 불리우는 method를 갖고 있습니다.
word = "Hello"
if word.isalpha():
print("It is an alphabet")
word = "123"
if word.isalpha():
print("It is an alphabet")
else:
print("It is not an alphabet")
그런데, 한글과 같은 경우에는 위의 방식으로 하면, True로 나오는 문제가 있으므로, 만약에 한글까지 구분을 하셔야 하는 경우에는 아래와 같이 encode method를 먼저 사용하시고 isalpha를 호출 하시면 됩니다.
word = "한글"
if word.encode().isalpha():
print("It is an alphabet")
else:
print("It is not an alphabet")
2. Using Regular Expression.
정규식을 활용하는 방식은 프로그래밍 언어를 떠나서 가장 일반적인 방법입니다.
import re
word="hello"
reg = re.compile(r'[a-zA-Z]')
if reg.match(word):
print("It is an alphabet")
else:
print("It is not an alphabet")
word="123"
reg = re.compile(r'[a-z]')
if reg.match(word):
print("It is an alphabet")
else:
print("It is not an alphabet")
3. Using operator
만약 단어 전체가 영어 알파벳이여야 하냐는 문제라고 가정을 하면, 아래와 같이 비교연산자를 이용해서 문제를 해결 할 수도 있습니다.
word = "hello"
if 'a' <= word[0] <= "z" or 'A' <= word[0] <='Z':
print("It is an alphabet")
else:
print("It is not an alphabet")
중요한 것은, 대문자 소문자를 모두 다 고려해야 하며, 단어 전체를 비교에 사용해서는 안된다는 것입니다. (첫글자가 영어면 나머지도 영어라고 가정!)
위의 코드를 upper나 lower 메쏘드로 더 간결 하게 작성 할 수 있습니다.
word = "hello"
if 'a' <= word[0].lower() <= "z":
print("It is an alphabet")
else:
print("It is not an alphabet")
4. Using lower and upper method
이 방식은 제가 가장 좋아하는 방식인데, 영어의 대/소문자라는 특성을 역이용하여, 만약에 대문자 또는 소문자로 변경을 했을 때, 둘이 다르다면 영어가 그게 아니라면 영어가 아니라고 분류 할 수 도 있습니다.
word = "hello"
if word.upper() != word.lower():
print("It is an alphabet")
else:
print("It is not an alphabet")
Happy coding!
One thought on “파이썬(Python)에서 단어가 영어인지 아닌지 확인하기”
마지막 4번째 방법은 인상 깊네요. 잘 보고 갑니다.