如何使用Python检查字符串中的字母是否大写?

36

我有一个字符串,例如"asdfHRbySFss",我想逐个字符地遍历它并查看哪些字母是大写的。如何在Python中实现这一点?

5个回答

69

使用 string.isupper()

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

如果您想将其转换回字符串,可以执行以下操作:

print "".join(uppers)

10

在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

6
使用 string.isupper() 和 filter() 函数。
>>> letters = "asdfHRbySFss"
>>> def isCap(x) : return x.isupper()
>>> filter(isCap, myStr)
'HRSF'

3
m = []
def count_capitals(x):
  for i in x:
      if i.isupper():
        m.append(x)
  n = len(m)
  return(n)

这是处理列表的另一种方式,如果您想恢复大写字母,请删除len()。


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']

Python中内置了一个包含所有大写ASCII字符的字符串:from string import ascii_uppercase。这种方法可能比在每个字母上调用isupper更快,但我还没有计时。如果您一直在使用它,甚至可以通过将该字符串转换为单个字符集来使其运行更快。 - MTKnife

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接