python正則表達式完成車牌號檢驗的代碼實例
正則表達式:
對于車牌而言,選用的正則表達式是"^[京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊A-Z]{1}[A-Z]{1}\s{1}[A-Z0-9]{4}[A-Z0-9掛學警港澳]{1}$",使用re模塊中的findall方法可以對輸入的車牌進行合法性判定
對實驗要求,可以大致拆分為以下幾個部分:
- 設置主循環(huán):將文件以追加讀寫的方式打開,進行合法性判斷、對非法的舍棄、合法中重復的位置定位,不重復的寫入、關閉文件保存
- 合法性判斷:首先定義了一個正則表達式,并使用其進行合法性判斷
- 合法性重復性判斷:設立一個列表,使用append方法將每次輸入的字符都加入其尾,使用列表的count方法計算每次寫入的字符串是否有重復,由于count會返回其在列表中的次數(shù),一旦次數(shù)超過1,我們就判定為重復,屆時使用列表的index方法返回的坐標+1即其在文本文件中第幾行出現(xiàn),打印出即可
實驗測試結(jié)果如下:
可以看到輸入的車牌號可以為漢字也可以是全英文,對車牌號數(shù)字數(shù)量不夠或車牌號輸入錯誤都會判定為輸入非法,而正確的非重復的會將其保存至文本文件里,正確的重復的將不會保存。
源代碼:
import re paizi=[] pattern_str = "^[京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊A-Z]{1}[A-Z]{1}\s{1}[A-Z0-9]{4}[A-Z0-9掛學警港澳]{1}$" def is_car_number(pattern, string): if re.findall(pattern, string): return 1 else: return 2 if __name__ == '__main__': while True: string_str=input('輸入車牌號') fp_exercise4 = open(r'D:\浙理課程相關資料\2022-2023上\python\exercise4_test.txt', 'a+') if is_car_number(pattern_str, string_str)==2: print("輸入非法,請重新輸入") else: paizi.append(string_str)#加到列表中,用于判定重復 if paizi.count(string_str)==2:#檢測到重復信號 print("該車牌已經(jīng)存在!它在第{}行".format(paizi.index(string_str)+1)) else: print("輸入正確,已保存!") fp_exercise4.write(string_str + '\n') fp_exercise4.close()
附包含新能源校驗:
新能源
組成:省份簡稱(1位漢字)+發(fā)牌機關代號(1位字母)+序號(6位),總計8個字符,序號不能出現(xiàn)字母I和字母O
* 通用規(guī)則:不區(qū)分大小寫,第一位:省份簡稱(1位漢字),第二位:發(fā)牌機關代號(1位字母)
* 序號位:
* 小型車,第一位:只能用字母D或字母F,第二位:字母或者數(shù)字,后四位:必須使用數(shù)字
* ---([DF][A-HJ-NP-Z0-9][0-9]{4})
* 大型車,前五位:必須使用數(shù)字,第六位:只能用字母D或字母F。
* ----([0-9]{5}[DF])
/^([京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊使領A-Z]{1}[a-zA-Z](([DF]((?![IO])[a-zA-Z0-9](?![IO]))[0-9]{4})|([0-9]{5}[DF]))|[京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊使領A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9掛學警港澳]{1})$/
總結(jié)
到此這篇關于python正則表達式完成車牌號檢驗的文章就介紹到這了,更多相關python正則檢驗車牌號內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
vscode和Anaconda安裝以及相關環(huán)境配置指南
Anaconda是一個開源的python發(fā)行版本,是現(xiàn)在比較流行的python數(shù)據(jù)科學平臺,可以對python的科學包做到有效管理,這篇文章主要給大家介紹了關于vscode和Anaconda安裝以及相關環(huán)境配置指南的相關資料,需要的朋友可以參考下2023-11-11Python接口傳輸url與flask數(shù)據(jù)詳解
這篇文章主要介紹了Python通過接口傳輸url與flask數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-09-09python3.6中anaconda安裝sklearn踩坑實錄
這篇文章主要介紹了python3.6中anaconda安裝sklearn踩坑實錄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07Python中使用matplotlib繪制mqtt數(shù)據(jù)實時圖像功能
這篇文章主要介紹了Python中使用matplotlib繪制mqtt數(shù)據(jù)實時圖像,本代碼中publish是一個死循環(huán),數(shù)據(jù)一直往外發(fā)送,詳細代碼跟隨小編一起通過本文學習下吧2021-09-09