Vérifiez si la chaîne est une majuscule, une minuscule ou une casse mixte en Python

92

Je souhaite classer une liste de chaînes en Python selon qu'elles sont majuscules, minuscules ou mixtes

Comment puis-je faire ceci?

Shreyas
la source
1
Considérez les possibilités de (1) caractères qui ne sont pas des lettres et (2) lettres sans casse du tout.
John Machin

Réponses:

173

Il existe un certain nombre de «méthodes is» sur les chaînes. islower()et isupper()devrait répondre à vos besoins:

>>> 'hello'.islower()
True

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

Voici un exemple d'utilisation de ces méthodes pour classer une liste de chaînes:

>>> 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']
Raymond Hettinger
la source
salut. merci pour la réponse courte. Mais comment classer les mots en majuscules? Par exemple: «Mot mixte». Semble que le 3ème exemple convient à toutes les combinaisons possibles de mots mixtes, exemple: "mIxEd WoRD" ..
Swadhikar
10
'hello'.istitle ()
Stephen
1

Je veux donner un cri pour l'utilisation du remodule pour cela. Surtout dans le cas de la sensibilité à la casse.

Nous utilisons l'option re.IGNORECASE lors de la compilation de l'expression régulière pour une utilisation dans des environnements de production avec de grandes quantités de données.

>>> 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']

Cependant, essayez de toujours utiliser l' inopérateur pour la comparaison de chaînes comme détaillé dans cet article

opération-plus rapide-re-match-or-str

Également détaillé dans l'un des meilleurs livres pour commencer à apprendre python avec

idiomatique-python

eleijonmarck
la source