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!
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'
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
Il existe deux façons différentes de rechercher des caractères en minuscules:
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()]
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']
Il existe de nombreuses méthodes, en voici quelques-unes:
En utilisant la méthode str
prédéfinie islower()
:
>>> c = 'a'
>>> c.islower()
True
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
Vérifier si la lettre est égale à sa forme minuscule:
>>> c = 'a'
>>> c.lower() == c
True
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
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
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