python正则表达式完成车牌号检验的代码实例

 更新时间:2024年02月19日 15:02:49   作者:青取之于蓝但没他蓝  
这篇文章主要给大家介绍了关于python正则表达式完成车牌号检验的相关资料,在Python中正则表达式是一种用于匹配和操作字符串的强大工具,文中通过代码介绍的非常详细,需要的朋友可以参考下

正则表达式:

对于车牌而言,选用的正则表达式是"^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼A-Z]{1}[A-Z]{1}\s{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$",使用re模块中的findall方法可以对输入的车牌进行合法性判定

对实验要求,可以大致拆分为以下几个部分:

  • 设置主循环:将文件以追加读写的方式打开,进行合法性判断、对非法的舍弃、合法中重复的位置定位,不重复的写入、关闭文件保存
  • 合法性判断:首先定义了一个正则表达式,并使用其进行合法性判断
  • 合法性重复性判断:设立一个列表,使用append方法将每次输入的字符都加入其尾,使用列表的count方法计算每次写入的字符串是否有重复,由于count会返回其在列表中的次数,一旦次数超过1,我们就判定为重复,届时使用列表的index方法返回的坐标+1即其在文本文件中第几行出现,打印出即可

实验测试结果如下:

可以看到输入的车牌号可以为汉字也可以是全英文,对车牌号数字数量不够或车牌号输入错误都会判定为输入非法,而正确的非重复的会将其保存至文本文件里,正确的重复的将不会保存。

源代码:

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("该车牌已经存在!它在第{}行".format(paizi.index(string_str)+1))
            else:
                print("输入正确,已保存!")
                fp_exercise4.write(string_str + '\n')
        fp_exercise4.close()

附包含新能源校验:

新能源
组成:省份简称(1位汉字)+发牌机关代号(1位字母)+序号(6位),总计8个字符,序号不能出现字母I和字母O
* 通用规则:不区分大小写,第一位:省份简称(1位汉字),第二位:发牌机关代号(1位字母)
* 序号位:
* 小型车,第一位:只能用字母D或字母F,第二位:字母或者数字,后四位:必须使用数字
* ---([DF][A-HJ-NP-Z0-9][0-9]{4})
* 大型车,前五位:必须使用数字,第六位:只能用字母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})$/

总结 

到此这篇关于python正则表达式完成车牌号检验的文章就介绍到这了,更多相关python正则检验车牌号内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python注释详解

    Python注释详解

    下面小编就为大家带来一篇Python注释详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • vscode和Anaconda安装以及相关环境配置指南

    vscode和Anaconda安装以及相关环境配置指南

    Anaconda是一个开源的python发行版本,是现在比较流行的python数据科学平台,可以对python的科学包做到有效管理,这篇文章主要给大家介绍了关于vscode和Anaconda安装以及相关环境配置指南的相关资料,需要的朋友可以参考下
    2023-11-11
  • Python的iOS自动化打包实例代码

    Python的iOS自动化打包实例代码

    这篇文章主要给大家介绍了关于Python的iOS自动化打包的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Python接口传输url与flask数据详解

    Python接口传输url与flask数据详解

    这篇文章主要介绍了Python通过接口传输url与flask数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-09-09
  • python3.6中anaconda安装sklearn踩坑实录

    python3.6中anaconda安装sklearn踩坑实录

    这篇文章主要介绍了python3.6中anaconda安装sklearn踩坑实录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 使用Python实现VPN搭建的流程步骤

    使用Python实现VPN搭建的流程步骤

    VPN(虚拟私人网络)是一种有效的解决方案,可以帮助我们在网络上匿名浏览,保护数据传输的安全性,虽然市面上有许多商业VPN服务,但你也可以通过Python自己搭建一个简单的VPN,本文将介绍如何用Python建立自己的VPN,需要的朋友可以参考下
    2024-06-06
  • Python Opencv基于透视变换的图像矫正

    Python Opencv基于透视变换的图像矫正

    这篇文章主要为大家详细介绍了Python Opencv基于透视变换的图像矫正,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 跟老齐学Python之用Python计算

    跟老齐学Python之用Python计算

    做为零基础学习Python,也就从计算小学数学题目开始吧。因为从这里开始,数学的基础知识列为肯定过关了。
    2014-09-09
  • 彻底卸载anaconda详细教程(推荐!)

    彻底卸载anaconda详细教程(推荐!)

    用anaconda更改我的python版本,就是出现了冻结无法更改等等之类的问题,担心更新anaconda还是会出错,于是打算卸载anaconda,重新下载一个安装,下面这篇文章主要给大家介绍了关于彻底卸载anaconda的相关资料,需要的朋友可以参考下
    2022-11-11
  • Python中使用matplotlib绘制mqtt数据实时图像功能

    Python中使用matplotlib绘制mqtt数据实时图像功能

    这篇文章主要介绍了Python中使用matplotlib绘制mqtt数据实时图像,本代码中publish是一个死循环,数据一直往外发送,详细代码跟随小编一起通过本文学习下吧
    2021-09-09

最新评论