如何在Python中检测小写字母?

时间:2012-10-17 13:04:46

标签: python string lowercase letters

我需要知道是否有一个函数可以检测字符串中的小写字母。说我开始编写这个程序:

s = input('Type a word')

是否有一个函数可以让我检测字符串s中的小写字母?可能最终将这些字母分配给另一个变量,或者只打印小写字母或小写字母数。

虽然这些是我想用它做的,但我最感兴趣的是如何检测小写字母的存在。最简单的方法是受欢迎的,我只是在一个介绍性的python课程,所以我的老师不希望看到复杂的解决方案,当我采取我的期中考试。谢谢你的帮助!

7 个答案:

答案 0 :(得分:32)

要检查字符是否为小写,请使用islower的{​​{1}}方法。这个简单的命令式程序打印字符串中的所有小写字母:

str

请注意,在Python 3中,您应该使用for c in s: if c.islower(): print c 而不是print(c)


  

可能最终将这些字母分配给不同的变量。

为了做到这一点,我建议使用列表理解,尽管你可能还没有在你的课程中介绍过这个:

print c

或者要获取字符串,您可以将>>> s = 'abCd' >>> lowercase_letters = [c for c in s if c.islower()] >>> print lowercase_letters ['a', 'b', 'd'] 与生成器一起使用:

''.join

答案 1 :(得分:11)

您可以使用内置函数any和生成器。

>>> any(c.islower() for c in 'Word')
True

>>> any(c.islower() for c in 'WORD')
False

答案 2 :(得分:10)

您可以通过两种不同的方式查找小写字符:

  1. 使用str.islower()查找小写字符。结合列表理解,您可以收集所有小写字母:

    lowercase = [c for c in s if c.islower()]
    
  2. 您可以使用正则表达式:

    import re
    
    lc = re.compile('[a-z]+')
    lowercase = lc.findall(s)
    
  3. 第一种方法返回单个字符列表,第二种方法返回字符列表 groups

    >>> import re
    >>> lc = re.compile('[a-z]+')
    >>> lc.findall('AbcDeif')
    ['bc', 'eif']
    

答案 3 :(得分:5)

这方面有很多方法,其中一些是:

  1. 使用预定义函数character.islower():

    >>> c = 'a'
    >>> print(c.islower()) #this prints True
    
  2. 使用ord()函数检查字母的ASCII码是否在小写字符的ASCII码范围内:

    >>> c = 'a'
    >>> print(ord(c) in range(97,123)) #this will print True
    
  3. 检查字母是否等于小写字母:

    >>> c = 'a'
    >>> print(c.lower()==c) #this will print True
    
  4. 但这可能不是全部,如果你不喜欢这些,你可以找到自己的方法:D。

    最后,让我们开始检测:

    d = str(input('enter a string : '))
    lowers = [c for c in d if c.islower()]
    #here i used islower() because it's the shortest and most-reliable one (being a predefined function), using this list comprehension is the most efficient way of doing this
    

答案 4 :(得分:3)

您应该使用raw_input来输入字符串。然后使用islower对象的str方法。

s = raw_input('Type a word')
l = []
for c in s.strip():
    if c.islower():
        print c
        l.append(c)
print 'Total number of lowercase letters: %d'%(len(l) + 1)

只是做 -

dir(s)

您将找到islower以及str

的其他属性

答案 5 :(得分:1)

import re
s = raw_input('Type a word: ')
slower=''.join(re.findall(r'[a-z]',s))
supper=''.join(re.findall(r'[A-Z]',s))
print slower, supper

打印:

Type a word: A Title of a Book
itleofaook ATB

或者你可以使用列表理解/生成器表达式:

slower=''.join(c for c in s if c.islower())
supper=''.join(c for c in s if c.isupper())
print slower, supper

打印:

Type a word: A Title of a Book
itleofaook ATB

答案 6 :(得分:0)

如果您不想使用库并想要简单的答案,则代码如下:

  def swap_alpha(test_string):
      new_string = ""
      for i in test_string:
          if i.upper() in test_string:
              new_string += i.lower()

          elif i.lower():
                new_string += i.upper()

          else:
              return "invalid "

      return new_string


user_string = input("enter the string:")
updated = swap_alpha(user_string)
print(updated)