web-dev-qa-db-fra.com

Comment détecter les lettres minuscules en Python?

J'ai besoin de savoir s'il existe une fonction qui détecte les lettres minuscules dans une chaîne. Disons 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 assigner ces lettres à une variable différente, ou simplement imprimer les lettres minuscules ou le nombre de lettres minuscules.

Bien que ce soit ce que j'aimerais en faire, je suis surtout 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 ne suis que dans un cours d'introduction python donc mon professeur ne voudrait pas voir des solutions complexes quand je prendrai mon cours à mi-parcours. Merci pour l'aide!

32
JustaGuy313

Pour vérifier si un caractère est en minuscule, utilisez la méthode islower de str. Ce programme simple et impératif imprime toutes les lettres minuscules de 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 assigner ces lettres à une variable différente.

Pour ce faire, je suggère d'utiliser une compréhension de liste, bien que vous n'ayez peut-être pas encore couvert cela dans votre cours:

>>> s = 'abCd'
>>> lowercase_letters = [c for c in s if c.islower()]
>>> print lowercase_letters
['a', 'b', 'd']

Ou pour obtenir une chaîne, vous pouvez utiliser ''.join Avec un générateur:

>>> lowercase_letters = ''.join(c for c in s if c.islower())
>>> print lowercase_letters
'abd'
35
Mark Byers

Vous pouvez utiliser la fonction intégrée any et le générateur.

>>> any(c.islower() for c in 'Word')
True

>>> any(c.islower() for c in 'Word')
False
12
Hyungoo Kang

Il existe deux façons différentes de rechercher des caractères en minuscules:

  1. Utilisez str.islower() pour rechercher des caractères en minuscules. Combiné à une compréhension de liste, 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 groupes de caractères :

>>> import re
>>> lc = re.compile('[a-z]+')
>>> lc.findall('AbcDeif')
['bc', 'eif']
11
Martijn Pieters

Il existe de nombreuses méthodes, en voici quelques-unes:

  1. En utilisant la méthode str prédéfinie islower():

    >>> c = 'a'
    >>> c.islower()
    True
    
  2. Utilisation de la fonction ord() pour vérifier si le code ASCII de la lettre est dans la plage des codes ASCII des caractères minuscules):

    >>> c = 'a'
    >>> ord(c) in range(97, 123)
    True
    
  3. Vérifier si la lettre est égale à sa forme minuscule:

    >>> c = 'a'
    >>> c.lower() == c
    True
    
  4. Vérification de la présence de la lettre dans la liste ascii_lowercase Du module string:

    >>> from string import ascii_lowercase
    >>> c = 'a'
    >>> c in ascii_lowercase
    True
    

Mais ce n'est peut-être pas tout, vous pouvez trouver vos propres moyens si vous n'aimez pas ceux-ci: D.

Enfin, commençons à 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 (probably) the most efficient way of doing this
5
MrGeek

Tu devrais utiliser raw_input pour prendre une chaîne. puis utilisez la méthode islower de l'objet str.

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)

Faites juste -

dir(s)

et vous trouverez islower et d'autres attributs de str

3
Hussain
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

Tirages:

Type a Word: A Title of a Book
itleofaook ATB

Ou vous pouvez utiliser une expression de compréhension/générateur de liste:

slower=''.join(c for c in s if c.islower())
supper=''.join(c for c in s if c.isupper())
print slower, supper

Tirages:

Type a Word: A Title of a Book
itleofaook ATB
1
user648852