【问题标题】:How can I check if a letter in a string is capitalized using python?如何使用python检查字符串中的字母是否大写?
【发布时间】:2011-01-15 01:29:41
【问题描述】:

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

【问题讨论】:

    标签: python capitalization


    【解决方案1】:

    使用string.isupper()

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

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

    print "".join(uppers)
    

    【讨论】:

      【解决方案2】:

      在 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
      

      【讨论】:

        【解决方案3】:

        使用 string.isupper() 和 filter()

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

        【讨论】:

          【解决方案4】:
          m = []
          def count_capitals(x):
            for i in x:
                if i.isupper():
                  m.append(x)
            n = len(m)
            return(n)
          

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

          【讨论】:

            【解决方案5】:

            另一种使用 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 更快,但我没有计时。如果你在它上面使用它,你甚至可以通过将该字符串转换为一组单独的字符来让它运行得更快。
            猜你喜欢
            • 1970-01-01
            • 2016-05-14
            • 2018-02-03
            • 2012-02-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-03-10
            • 1970-01-01
            相关资源
            最近更新 更多