2011-01-15 21 views

Respuesta

43

Uso string.isupper()

letters = "asdfHRbySFss" 
uppers = [l for l in letters if l.isupper()] 

si quieres llevar esa vuelta a una cadena que puede hacer:

print "".join(uppers) 
+0

perfecto, eso fue todo gracias! – clayton33

4

Uso string.isupper() con filtro()

>>> letters = "asdfHRbySFss" 
>>> def isCap(x) : return x.isupper() 
>>> filter(isCap, myStr) 
'HRSF' 
6

Otra forma más compacta de hacer la solución de sdolan en Python 2.7+

>>> test = "asdfGhjkl" 
>>> print "upper" if any(map(str.isupper, test)) else "lower" 
upper 
>>> test = "asdfghjkl" 
>>> print "upper" if any(map(str.isupper, test)) else "lower" 
lower 
1
m = [] 
def count_capitals(x): 
    for i in x: 
     if i.isupper(): 
     m.append(x) 
    n = len(m) 
    return(n) 

Esta es otra manera de hacerlo con las listas, si desea que las tapas de espalda, basta con retirar el len()

0

Otra manera de hacerlo utilizando el conjunto de caracteres ASCII - similar a @sdolan

letters = "asdfHRbySFss" 
uppers = [l for l in letters if ord(l) >= 65 and ord(l) <= 90] #['H', 'R', 'S', 'F'] 
lowers= [l for l in letters if ord(l) >= 97 and ord(l) <= 122] #['a', 's', 'd', 'f', 'b', 'y', 's', 's'] 
Cuestiones relacionadas