파이썬(Python)에서 단어가 영어인지 아닌지 확인하기

파이썬(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-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!

댓글 남기기

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

%d 블로거가 이것을 좋아합니다: