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


Necesito saber si hay una función que detecta las letras minúsculas en una cadena. Digamos que comencé a escribir este programa:

s = input('Type a word')

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

Si bien 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, solo estoy en un curso introductorio de python, por lo que mi profesor no querría ver soluciones complejas cuando tome mi examen de mitad de período. ¡Gracias por la ayuda!


20
2017-10-17 13:04


origen


Respuestas:


Para verificar si un personaje está en minúscula, use la islower método de str. Este sencillo programa imperativo imprime todas las letras minúsculas en su cadena:

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

Tenga en cuenta que en Python 3 debe usar print(c) en lugar de print c.


Posiblemente termina asignando esas letras a una variable diferente.

Para hacer esto, sugeriría usar una lista de comprensión, aunque es posible que aún no haya cubierto esto 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 que puede usar ''.join con un generador:

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

28
2017-10-17 13:07



Puede usar la función incorporada any y generador

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

>>> any(c.islower() for c in 'WORD')
False

8
2017-10-17 13:12



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

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

    lowercase = [c for c in s if c.islower()]
    
  2. Puedes usar una expresión regular:

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

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

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

8
2017-10-17 13:10



Hay muchos métodos para esto, aquí están algunos de ellos:

  1. Usando la función predefinida character.islower ():

    >>> c = 'a'
    >>> print(c.islower()) #this prints True
    
  2. Usando la función ord () para verificar si el código ASCII de la carta está en el rango de los códigos ASCII de los caracteres en minúscula:

    >>> c = 'a'
    >>> print(ord(c) in range(97,123)) #this will print True
    
  3. Verificando si la letra es igual a minúscula:

    >>> c = 'a'
    >>> print(c.lower()==c) #this will print True
    

Pero eso puede no ser todo, puedes encontrar tu propio camino si no te gustan estos: D.

Finalmente, comencemos a detectar:

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
2018-05-04 20:32



Deberías usar raw_input para tomar una entrada de cadena. luego usa islower método de str objeto.

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)

Solo haz -

dir(s)

y encontrarás islower y otros atributos de str


3
2017-10-17 13:13



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

Huellas dactilares:

Type a word: A Title of a Book
itleofaook ATB

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

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

Huellas dactilares:

Type a word: A Title of a Book
itleofaook ATB

1
2017-10-17 13:10