J'ai une chaîne comme "asdfHRbySFss" et je veux la parcourir un caractère à la fois pour voir quelles lettres sont en majuscule. Comment puis-je faire cela en Python?
Utilisez string.isupper ()
letters = "asdfHRbySFss"
uppers = [l for l in letters if l.isupper()]
si vous voulez ramener cela dans une chaîne, vous pouvez faire:
print "".join(uppers)
Une autre manière, plus compacte, de faire la solution de sdolan dans 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
Utilisez string.isupper () avec filter ()
>>> letters = "asdfHRbySFss"
>>> def isCap(x) : return x.isupper()
>>> filter(isCap, myStr)
'HRSF'
m = []
def count_capitals(x):
for i in x:
if i.isupper():
m.append(x)
n = len(m)
return(n)
C’est une autre façon de procéder avec les listes. Si vous souhaitez que les majuscules soient rétablies, supprimez simplement le len
Une autre façon de le faire en utilisant un jeu de caractères ascii - similaire à @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']