34

我有一个像“asdfHRbySFss”这样的字符串,我想一次遍历一个字符,看看哪些字母是大写的。我怎样才能在 Python 中做到这一点?

4

5 回答 5

66

使用string.isupper()

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

如果你想把它带回一个字符串,你可以这样做:

print "".join(uppers)
于 2011-01-15T01:33:23.210 回答
9

在 Python 2.7+ 中执行 sdolan 解决方案的另一种更紧凑的方法

>>> 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
于 2013-05-30T18:14:25.443 回答
6

将 string.isupper() 与 filter() 一起使用

>>> letters = "asdfHRbySFss"
>>> def isCap(x) : return x.isupper()
>>> filter(isCap, myStr)
'HRSF'
于 2011-12-20T13:34:04.407 回答
3
m = []
def count_capitals(x):
  for i in x:
      if i.isupper():
        m.append(x)
  n = len(m)
  return(n)

这是您可以使用列表的另一种方式,如果您想要返回大写字母,只需删除 len()

于 2015-08-31T23:02:30.120 回答
1

另一种使用 ascii 字符集的方法 - 类似于 @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']
于 2016-07-19T04:26:55.983 回答