¿Cómo detectar letras minúsculas en Python?

Necesito saber si existe alguna función que detecte las letras minúsculas en una cadena. Digamos que empecé a escribir este programa:

s = input('Type a word')

¿Habría alguna función que me permitiera detectar una letra minúscula dentro de la cadena s? Posiblemente terminaría asignando esas letras a una variable diferente, o simplemente imprimiendo las letras minúsculas o el número de letras minúsculas.

Aunque eso sería lo que me gustaría hacer con él, estoy más interesado en cómo detectar la presencia de letras minúsculas. Los métodos más simples serían bienvenidos, sólo estoy en un curso de introducción a Python por lo que mi profesor no querría ver soluciones complejas cuando tome mi examen parcial. ¡Gracias por la ayuda!

Para comprobar si un carácter está en minúsculas, utilice el método islower de str. Este sencillo programa imperativo imprime todas las letras minúsculas de la cadena:

for c in s:
    if c.islower():
         print c

Ten en cuenta que en Python 3 debes usar print(c) en lugar de print c.


Posiblemente termine asignando esas letras a una variable diferente.

Para hacer esto yo sugeriría el uso de una comprensión de la lista, aunque puede que no han cubierto esto todavía en su curso:

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

O para obtener una cadena puedes usar ''.join con un generador:

>>> lowercase_letters = ''.join(c for c in s if c.islower())
>>> print lowercase_letters
'abd'
Comentarios (0)

Hay 2 formas diferentes de buscar caracteres en minúsculas:

  1. Utilice str.islower() para encontrar caracteres en minúscula. Combinado con una comprensión de lista, puede reunir todas las letras minúsculas:

     minúsculas = [c for c in s if c.islower()]
  2. Puedes utilizar una expresión regular:

     import re
    
     lc = re.compile('[a-z]+')
     minúsculas = lc.findall(s)

El primer método devuelve una lista de caracteres individuales, el segundo devuelve una lista de grupos de caracteres:

>>> import re
>>> lc = re.compile('[a-z]+')
>>> lc.findall('AbcDeif')
['bc', 'eif']
Comentarios (7)
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

Impresiones:

Type a word: A Title of a Book
itleofaook ATB

O puede utilizar una expresión de comprensión de lista / generador:

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
Comentarios (0)