[python] Python에서 문자열이 대문자, 소문자 또는 대소 문자 혼합인지 확인

대문자, 소문자 또는 대소 문자 혼합 여부에 따라 Python에서 문자열 목록을 분류하고 싶습니다.

어떻게 할 수 있습니까?



답변

문자열에는 여러 “is 메소드”가 있습니다. islower()isupper()요구 사항을 충족해야합니다 :

>>> 'hello'.islower()
True

>>> [m for m in dir(str) if m.startswith('is')]
['isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper']

다음은 이러한 메서드를 사용하여 문자열 목록을 분류하는 방법의 예입니다.

>>> words = ['The', 'quick', 'BROWN', 'Fox', 'jumped', 'OVER', 'the', 'Lazy', 'DOG']
>>> [word for word in words if word.islower()]
['quick', 'jumped', 'the']
>>> [word for word in words if word.isupper()]
['BROWN', 'OVER', 'DOG']
>>> [word for word in words if not word.islower() and not word.isupper()]
['The', 'Fox', 'Lazy']


답변

이를 위해 re모듈 사용에 대해 한마디 부탁드립니다 . 특히 대소 문자 구분의 경우.

대량의 데이터가있는 프로덕션 환경에서 사용하기 위해 정규식을 컴파일하는 동안 re.IGNORECASE 옵션 을 사용합니다.

>>> import re
>>> m = ['isalnum','isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'ISALNUM', 'ISALPHA', 'ISDIGIT', 'ISLOWER', 'ISSPACE', 'ISTITLE', 'ISUPPER']
>>>
>>>
>>> pattern = re.compile('is')
>>>
>>> [word for word in m if pattern.match(word)]
['isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper']

그러나이 in게시물에 설명 된대로 문자열 비교를 위해 항상 연산자를 사용하십시오.

빠른 작업 다시 일치 또는 str

또한 파이썬 학습을 시작하기에 가장 좋은 책 중 하나에 자세히 설명되어 있습니다.

관용적 파이썬


답변