2011-01-15 10 views

risposta

43

Usa string.isupper()

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

se si desidera portare che in una stringa si può fare:

print "".join(uppers) 
+0

perfetto, è stato grazie! – clayton33

4

Usa string.isupper() con filtro()

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

Un altro, più compatto, modo di fare la soluzione di sdolan in 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) 

Questo è un altro modo si può fare con le liste, se si desidera che i tappi di nuovo, è sufficiente rimuovere la len()

0

Un altro modo per farlo utilizzando set di caratteri ASCII - simile 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'] 
Problemi correlati