如何验证字符串?

时间:2019-04-05 18:05:38

标签: python string format postal

我只是想知道如何编写验证字符串的代码?例如,用户输入邮政编码(字符串)。我必须确保它遵循L#L#L#格式L->仅代表一个字母,而#->仅代表一个数字,而不是十进制...如果不要求用户再次输入

1 个答案:

答案 0 :(得分:1)

字符串方法 more info

在您的示例中,您可以使用2的步骤对字符串进行切片,并检查是否是数字/字母:

.isdecimal检查组成以10为底的数字系统(0-9)的字符。

.isalpha检查字母(A-Z)

test_good = 'L5L5L5'
test_bad = 'LLLLLL'

def check_string(test):
    if test[0::2].isalpha() and test[1::2].isdecimal():
        return True
    else:
        return False

测试一下:

check_string(test_good)
>>>True

阴性测试

check_string(test_bad)
>>>False

正则表达式 more info regexr

Regex进行模式匹配操作,实际上还有很多。在下面的示例中,我提前编译了模式,以使它看起来很干净,并且可以根据需要重用。

我还使用re.fullmatch(),它要求提供的整个字符串匹配,而不仅仅是其中一部分。它会自行返回None或match对象,所以我检查它是否存在(意味着它已匹配)并返回True,否则返回(无)返回False。

import re

def match(test):
    re_pattern = re.compile('[A-Z][0-9][A-Z][0-9][A-Z][0-9]')
    if re.fullmatch(re_pattern, test):
        return True
    else:
        return False