Рассмотрим возможности (1) символов, которые не являются буквами, и (2) букв, которые вообще не имеют регистра.
Джон Мачин
Ответы:
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 ifnot word.islower() andnot word.isupper()]
['The', 'Fox', 'Lazy']
Здравствуй. спасибо за короткий ответ. Но как мне классифицировать слова, написанные с большой буквы? Например: «Смешанное слово». Кажется, что 3-й пример подходит для всех возможных комбинаций смешанных слов, например: "mIxEd WoRD" ..
Swadhikar
10
'hello'.istitle ()
Стивен
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оператор для сравнения строк, как подробно описано в этом сообщении.
Ответы:
Для строк существует ряд «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
оператор для сравнения строк, как подробно описано в этом сообщении.быстрее-операция-повторное сопоставление-или-ул
Также подробно описано в одной из лучших книг для начала изучения Python с
идиоматический питон
источник