我想验证字符串是否是有效代码;特别是,它应该是一对两个字符。想想2个字符的国家代码。使用re
模块,我提出了以下内容:
valid = re.compile('([a-zA-Z]){2,2}')
if valid.match(s) and len(s) == 2:
return True
else:
return False
我觉得这根本不是最佳选择。我该如何优化此测试?
答案 0 :(得分:6)
只需返回str.isalpha()
的简单测试结果加上长度测试:
return len(s) == 2 and s.isalpha()
对于默认C
语言环境中的字节字符串(例如,您没有使用locale
模块更改语言环境),只有包含两个ASCII字母(大写或小写)的字符串才会生效
如果必须使用正则表达式,则锚定表达式:
return re.match('^[a-zA-Z]{2}$', s) is not None
is not None
测试也给你一个布尔值。 <{1}}隐含^
锚点,但明确表示没有伤害。
不使用正则表达式会更快:
re.match()