2016-07-31 55 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()來代替。只有在我發佈之後才意識到我的錯字。 –