2016-07-31 109 views
2

如何在有数字和字母的情况下为NRIC数字进行输入验证?的身份证号码 实施例:S9738275G,S8937231H,S7402343B IC =输入(“输入身份证号:”)对一个输入中的字母和数字的Python输入验证

+0

're.match(r“[\ dA-Z] +”)'应该有效。 –

+0

FWIW,我昨天写了一个函数来确定NRIC检查代码。 http://stackoverflow.com/a/38674235/4014959 –

+0

Wikipedia有[关于NRIC编号结构的信息](https://en.wikipedia.org/wiki/National_Registration_Identity_Card#Structure_of_the_NRIC_number.2FFIN) –

回答

0

这可以以很多不同的方式来完成。根据您的应用程序的规模,您可能想要更简单或更复杂的东西。

如果你想要坚如磐石的东西,你可以使用库,如Pygood

如果你正在寻找中间的东西,你也可以使用正则表达式,在这里看到an example

如果你想保持尽可能简单,你可以做一个简单的验证,像这样:

str = "B123" 
if str[0].isalpha() and not str[1:].isalpha(): 
    # is valid 
+0

数字如何?需要输入的字母和数字? 在这种情况下,它将是9,因为'S9738275G'有9个字母数字。 –

0

试试这个

string = 'S9738275G'; 

if string.isalnum(): 
    print('It\'s alphanumeric string') 
else: 
    print('It\'s not an alphanumeric string') 
1

为您的使用情况下,这已经足够了:

>>> a = 'A12345678B' 
>>> if a[0].isalpha() and a[-1].isalpha() and a[1:-1].isdigit(): print True 
... 
True 
>>> a = 'A12345678' 
>>> if a[0].isalpha() and a[-1].isalpha() and a[1:-1].isdigit(): print True 
... 
>>> 

[0]第一个字符,[-1]最后一个字符,[1:-1]第二个字符最后一个字符

编辑:看看PM 2Ring的评论,身份证号码有一个特定的结构和创建检查数字/字符的具体方法,所以我会按照提供的链接中给出的代码。假设你的身份证号码显然是相同的,因为你没有指定它是什么。有趣的是:“计算NRIC校验和的算法是不公开的”Wikipedia

+0

你可以使用'.isdigit',那么你就不需要'try:... except'。 –

+0

@ PM2Ring绝对是真的,但是当我测试它时,我忘了isdigit()中的()并使用int()来代替。只有在我发布之后才意识到我的错字。 –