在python中,有没有一种很好的方法来检查字符串的一部分是由字母组成的,另一部分是数字组成的



我正在做一个密码检查器,其中一个要求是检查密码是否可以是纽约牌照(即3个字母然后4个数字(

我是这样做的:

def check_license(password):
if len(password) == 7:
if password[0].isalpha() and password[1].isalpha() and password[2].isalpha() and password[3].isdigit() and password[4].isdigit() and password[5].isdigit() and password[6].isdigit():
print('License: -2')
score -= 2

但我想知道是否有一种更干净的方式来格式化第三行,或者只是一种更快的方式

您可以使用正则表达式:

import re
def check_license(password):
return bool(re.match(r'^[A-Za-z]{3}[0-9]{4}$', password))

测试字符串的两个切片,如下所示:

def is_license(s):
return len(s) == 7 and s[:3].isalpha() and s[3:].isdigit()
for test in "abc1234", "ab12345", "ab123cd", "abc123a":
print(is_license(test)) # True, False, False, False

这将包括来自其他字母表的字母和数字(例如is_license("和bc123٠")True(。要排除这些,可以添加条件s.isascii()

相关内容

  • 没有找到相关文章

最新更新