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


92

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

어떻게 할 수 있습니까?


1
(1) 문자가 아닌 문자와 (2) 대소 문자가 전혀없는 문자의 가능성을 고려하십시오.
John Machin 2011

답변:


173

문자열에는 여러 "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']

안녕하세요. 짧은 답변에 감사드립니다. 그러나 대문자로 된 단어를 어떻게 분류합니까? 예 : '혼합 단어'. 세 번째 예는 혼합 단어의 가능한 모든 조합에 맞는 것 같습니다. 예 : "mIxEd WoRD"..
Swadhikar

10
'hello'.istitle ()
Stephen

1

이를 위해 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

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

관용적 파이썬

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.