Подтвердить что ты не робот

Проверьте, является ли строка верхним, нижним или смешанным регистром в Python

Я хочу классифицировать список строк в Python в зависимости от того, являются ли они строчными, строчными или смешанными.

Как я могу это сделать?

4b9b3361

Ответ 1

В строках есть несколько методов 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']

Ответ 2

Я хочу поблагодарить за использование модуля 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 для сравнения строк, как подробно описано в этом посте

быстрее операция-ре-матч-или-ул

Также подробно описано в одной из лучших книг по изучению питона с

идиоматическое-питон