string - python - 如何检查小写字母是否存在?

python有islower()和.isupper()方法。


>>> test = '8765iouy9987OIUY'


>>> test.islower()


False


>>> test.isupper()


False



但是,下面的混合字符串值有效:


>>> test2 = 'b1'


>>> test2.islower()


True


>>> test2.isupper()


False



如何检测小写字母?

时间: 原作者:

如果字符串中的有字母为小写或大写,islower()和isupper()就会返回True,

你必须测试每个字符;


>>> test = '8765iouy9987OIUY'


>>> any(c.islower() for c in test)


True


>>> any(c.isupper() for c in test)


True



原作者:

如果要删除所有小写字母,可以:


>>> test = '8765iouy9987OIUY'


>>>"".join([i for i in test if not i.islower()])


'87659987OIUY'



原作者:

可以使用模块:


import re


print re.findall(r"[a-z]",'8765iouy9987OIUY')



输出:


['i', 'o', 'u', 'y']



如果没有匹配项,你会得到[]作为输出,正则表达式匹配a到z的所有字符。

原作者:

或者你可以尝试map()


map(str.isupper, '8765iouy9987OIUY')


# output: [False, False, False, False, False, False, False, False,


# False, False, False, False, True, True, True, True]



然后使用any()检查所有大写字母:


any(map(str.isupper, '8765iouy9987OIUY'))


# output: True



原作者:

我认为这是最易读和直接的方法。


def password_gen():


while True:


 password = ''.join(random.SystemRandom().choice(string.ascii_letters + string.digits) for n in range(12))


 tests = {}


 tests['upper'] = any(char.isupper() for char in password)


 tests['lower'] = any(char.islower() for char in password)


 tests['digit'] = any(char.isdigit() for char in password)


 if all(tests.values()):


 break


return password



原作者:


test = '8765iouy9987OIUY'


print(test == test.upper()) # returns False as some letters are small


test = '222WWWW'


print(test == test.upper()) # returns True as no letters are small



原作者:
...