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