如何识别Python中是否至少有一个大写字母



首先,我对Python很陌生。

正如标题所说,我想确定一个字符串是否至少包含一个大写字母。如果没有,我将提出一个错误,说类似于没有检测到大写字母。我发现any()函数可以帮助我做到这一点,但当我把它放在函数上时,它会返回错误'bool' object is not iterable

我得到的是:

def identify_capital(x):
    if any(x.isupper()) == True:
        return True
    else:
        raise ValueError("No capital letter detected")

此外,我尝试过使用for循环,但它返回以下错误'int' object is not subscriptable。这是代码:

def identify_capital(x):
    for letter in range(len(x)):
        if letter[i] in x.isupper():
            return True
        else:
            raise ValueError("No capital letter detected")

谢谢你的帮助,如果需要更多信息,请告诉我。

您可以使用mapisupper函数

例如:

s = "abcAs"
contains_upper_case = any(map(str.isupper, s))
print(contains_upper_case)

any函数应该接受bool值的可迭代值,而不是x.isupper()返回的单个bool值。遍历字符串中的字符:

>>> test1 = 'foo bar'
>>> test2 = 'foo Bar'
>>> any(c.isupper() for c in test1)
False
>>> any(c.isupper() for c in test2)
True

使用正则表达式字符类[A-Z]匹配大写字母的另一种方法:

>>> import re
>>> re.search('[A-Z]', test1)
>>> re.search('[A-Z]', test2)
<_sre.SRE_Match object; span=(4, 5), match='B'>

re.search函数返回一个truthy Match对象或一个false None,因此您可以在if语句中使用它,如:

if re.search('[A-Z]', x):
    ...

最新更新