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 ifnot word.islower() andnot word.isupper()]
['The', 'Fox', 'Lazy']
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
Réponses:
Il existe un certain nombre de «méthodes is» sur les chaînes.
islower()
etisupper()
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']
la source
Je veux donner un cri pour l'utilisation du
re
module 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'
in
opérateur pour la comparaison de chaînes comme détaillé dans cet articleopération-plus rapide-re-match-or-str
Également détaillé dans l'un des meilleurs livres pour commencer à apprendre python avec
idiomatique-python
la source