Comment détecter les lettres minuscules en Python?
j'ai besoin de savoir s'il y a une fonction qui détecte les lettres minuscules dans une chaîne. Dites que j'ai commencé à écrire ce programme:
s = input('Type a word')
y aurait-il une fonction qui me permettrait de détecter une lettre minuscule dans la chaîne s? Peut-être finir par attribuer ces lettres à une variable différente, ou simplement imprimer les lettres minuscules ou le nombre de lettres minuscules.
Alors que ce serait ce que je voudrais faire avec elle, je suis plus intéressé par la façon de détecter la présence de lettres minuscules. Les méthodes les plus simples seraient les bienvenues, je suis seulement dans un cours d'introduction à python pour que mon professeur ne veuille pas voir de solutions complexes quand je passe mon examen de mi-parcours. Merci pour l'aide!
6 réponses
Pour vérifier si un caractère est inférieur cas, utilisez le islower
méthode str
. Ce programme impératif simple imprime toutes les lettres minuscules dans votre chaîne:
for c in s:
if c.islower():
print c
notez que dans Python 3 vous devez utiliser print(c)
au lieu de print c
.
peut-être finir par affecter ces lettres à une variable différente.
pour ce faire, je vous suggérerais d'utiliser une liste de compréhension, bien que vous n'ayez peut-être pas couvert ceci pourtant dans votre parcours:
>>> s = 'abCd'
>>> lowercase_letters = [c for c in s if c.islower()]
>>> print lowercase_letters
['a', 'b', 'd']
Ou pour obtenir une chaîne de caractères, vous pouvez utiliser ''.join
avec un générateur de:
>>> lowercase_letters = ''.join(c for c in s if c.islower())
>>> print lowercase_letters
'abd'
Vous pouvez utiliser la fonction intégrée any
et de la génératrice.
>>> any(c.islower() for c in 'Word')
True
>>> any(c.islower() for c in 'WORD')
False
il y a 2 façons différentes de chercher des caractères minuscules:
Utiliser
str.islower()
pour trouver des caractères en minuscules. Combiné avec une liste de compréhension, vous pouvez rassembler toutes les lettres minuscules:lowercase = [c for c in s if c.islower()]
Vous pouvez utiliser une expression régulière:
import re lc = re.compile('[a-z]+') lowercase = lc.findall(s)
La première méthode renvoie une liste de caractères individuels, la seconde renvoie une liste de caractère groupes:
>>> import re
>>> lc = re.compile('[a-z]+')
>>> lc.findall('AbcDeif')
['bc', 'eif']
il y a beaucoup de méthodes à cela, en voici quelques-unes:
en utilisant le caractère prédéfini de la fonction.islower ():
>>> c = 'a' >>> print(c.islower()) #this prints True
en utilisant la fonction ord() pour vérifier si le code ASCII de la lettre est dans la gamme des codes ASCII des caractères minuscules:
>>> c = 'a' >>> print(ord(c) in range(97,123)) #this will print True
Vérifier si la lettre est égale à elle est minuscule:
>>> c = 'a' >>> print(c.lower()==c) #this will print True
mais cela peut ne pas être de tous, vous pouvez trouver vos propres moyens si vous n'aimez pas ceux-ci: D.
Enfin, nous allons commencer à détecter:
d = str(input('enter a string : '))
lowers = [c for c in d if c.islower()]
#here i used islower() because it's the shortest and most-reliable one (being a predefined function), using this list comprehension is the most efficient way of doing this
Vous devez utiliser raw_input
prendre une chaîne de caractères d'entrée. ensuite, utilisez islower
méthode str
objet.
s = raw_input('Type a word')
l = []
for c in s.strip():
if c.islower():
print c
l.append(c)
print 'Total number of lowercase letters: %d'%(len(l) + 1)
il suffit de ne -
dir(s)
et vous trouverez islower
et d'autres attributs de str
import re
s = raw_input('Type a word: ')
slower=''.join(re.findall(r'[a-z]',s))
supper=''.join(re.findall(r'[A-Z]',s))
print slower, supper
Imprime:
Type a word: A Title of a Book
itleofaook ATB
Ou vous pouvez utiliser une liste de compréhension / de générateur d'expression:
slower=''.join(c for c in s if c.islower())
supper=''.join(c for c in s if c.isupper())
print slower, supper
Imprime:
Type a word: A Title of a Book
itleofaook ATB