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!

22
demandé sur JustaGuy313 2012-10-17 17:04:46

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'
29
répondu Mark Byers 2012-10-17 13:14:23

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
10
répondu Hyungoo Kang 2012-10-17 13:12:19

il y a 2 façons différentes de chercher des caractères minuscules:

  1. 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()]
    
  2. 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']
9
répondu Martijn Pieters 2012-10-17 13:42:16

il y a beaucoup de méthodes à cela, en voici quelques-unes:

  1. en utilisant le caractère prédéfini de la fonction.islower ():

    >>> c = 'a'
    >>> print(c.islower()) #this prints True
    
  2. 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
    
  3. 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
4
répondu Mr Geek 2017-09-13 10:01:12

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

3
répondu Hussain 2012-10-17 13:49:58
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
1
répondu 2012-10-17 13:10:29