如何检查字符串是否只包含大写或小写字母?

时间:2015-07-02 07:20:38

标签: python string

当且仅当s中至少有一个字母字符且s中的字母字符全部为大写或全部为小写时,返回True。

def upper_lower(s):

   """ (str) -> bool



>>> upper_lower('abc')
True
>>> upper_lower('abcXYZ')
False
>>> upper_lower('XYZ')
True
"""

4 个答案:

答案 0 :(得分:1)

正则表达式是迄今为止最有效的方法。

但如果你想在你的代码中加入一些pythonic风格,你可以试试这个:

'abc'.isupper()
'ABC'.isupper()
'abcABC'.isupper()

upper_lower = lambda s: s.isupper() or s.islower()

答案 1 :(得分:1)

使用re.match

if re.match(r'(?:[A-Z]+|[a-z]+)$', s):
    print("True")
else:
    print("Nah")

我们不需要添加行锚的开头,因为re.match尝试从字符串的开头匹配。

因此,只有当输入字符串只包含小写字母或仅包含大写字母时,它才会进入if块。

答案 2 :(得分:0)

您可以使用以下正则表达式:

if re.search('^([a-z]+|[A-Z]+)$', s):
    # all upper or lower case

说明:^匹配字符串的开头,[a-z][A-Z]是微不足道的匹配,+匹配一个或多个。 |是" OR"正则表达式,最后$匹配字符串的结尾。

或者,您可以使用all并检查:

all(c.islower() for c in s)
# same thing for isupper()

答案 3 :(得分:0)

您可以收集所有字母字符,然后检查全部或上部或全部是否较低

a=[c for c in s if s.isalpha()]
if a:
    if "".join(a).isupper() or "".join(a).islower():
    print "yes"