【Python】正则表达式应用

简介: 【Python】正则表达式应用

b3c4724fca0c4e818486d8d85c3d98b8.png



一、写在前面✨


大家好!我是初心,希望我们一路走来能坚守初心!

今天跟大家分享的文章是 正则表达式的应用 ,希望能帮助到大家!本篇文章收录于 初心Python从入门到精通 专栏。


🏠 个人主页:初心%个人主页

🧑 个人简介:大家好,我是初心,和大家共同努力

💕欢迎大家:这里是CSDN,我记录知识的地方,喜欢的话请三连,有问题请私信😘

💕 永远不要熄灭心中的火,哪怕别人只看见烟。』—— 佚名「网易云」


二、姓名检查


编写程序,输入学号姓名,检查格式是否符合要求(用正则表达式),符合则返回(学号,姓名)元组。

格式要求:

  • 学号长度9位数字,且5,6位为(19-22)之间
  • 姓名为2-4个中文字符(中文可以使用unicode码范围[\u4e00-\u9fa5]判断)
def NO_name_parse(s):
    ''' 
    >>> NO_name_parse("201521002 萧敬腾")
    ('201521002', '萧敬腾')
    >>> NO_name_parse("203222008 杨过")
    ('203222008', '杨过')
    >>> NO_name_parse("203222008\\r\\n杨过")
    ('203222008', '杨过')
    >>> NO_name_parse("203222008\\t杨过")
    ('203222008', '杨过')
    >>> NO_name_parse("203222008杨过")
    ('203222008', '杨过')
    >>> None == NO_name_parse("230218001 古巨基")
    True
    >>> None == NO_name_parse("230221001 敏敏特布尔")
    True
    >>> None == NO_name_parse("2302ab001 迪丽热巴")
    True
    >>> None == NO_name_parse("2302ab001 迪丽热巴")
    True
    '''
    # Edit Your Code Here
import doctest
doctest.testmod()


具体实现:(不包含原有代码)

import re
# 匹配学号和姓名,?:表示取消分组,中间部分使用非贪婪模式,防止汉字只有两个
regex = '^(\d{4}(?:19|2[0-2])\d{3})[^\u4e00-\u9fa5]*?([\u4e00-\u9fa5]{2,4})$'
reg = re.compile(regex)
f1 = reg.match(s)
if f1:
    return f1.groups()



三、解析电影排行榜


基于BeautifulSoup实现爬取豆瓣网上的电影信息。

BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间。


编写程序,给出豆瓣电影排行榜中一部电影的html内容,请试图解析出(片名,上映时间,评分),以元组形式返回。(其中上映时间只需要取第一个)

import re
s = r'''<table width="100%" class=""> 
        <tr class="item">
            <td width="100" valign="top">
                    <a class="nbg" href="https://movie.douban.com/subject/33455421/"  title="疾速追杀4">
                        <img src="https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2884692335.webp" width="75" alt="疾速追杀4" class=""/>
                    </a>
            </td>
            <td valign="top">
                <div class="pl2">
                    <a href="https://movie.douban.com/subject/33455421/"  class="">
                        疾速追杀4
                        / <span style="font-size:13px;">杀神John Wick4(港) / 捍卫任务4(台)</span>
                    </a>
                    <p class="pl">2023-03-13(西南偏南电影节) / 2023-03-24(美国) / 基努·里维斯 / 甄子丹 / 比尔·斯卡斯加德 / 劳伦斯·菲什伯恩 / 真田广之 / 沙米尔·安德森 / 兰斯·莱迪克 / 泽山璃奈 / 克兰西·布朗 / 斯科特·阿金斯 / 伊恩·麦柯肖恩 / 马克·扎罗 / 娜塔丽·特纳...</p>
                        <div class="star clearfix">
                                <span class="allstar40"></span>
                                <span class="rating_nums">8.0</span>
                                <span class="pl">(13549人评价)</span>
                        </div>
                </div>
            </td>
        </tr>
    </table>'''
def douban_parse(s):
    '''
    >>> douban_parse(s)
    ('疾速追杀4', '2023-03-13', '8.0')
    '''
  # Edit Your Code Here
    return 
import doctest
doctest.testmod()

具体实现:

from bs4 import BeautifulSoup
soup = BeautifulSoup(s, features='html.parser')
# 匹配影片名
movie_name = re.match(r'^[^ ].+',soup.find_all("a", class_="")[0].text.strip()).group()
# 匹配上映时间
movie_time = re.match(r'[\d-]*',soup.find_all("p", class_="pl")[0].text.strip()).group()
# 匹配评分
movie_score = soup.find_all("span",class_='rating_nums')[0].text.strip()
# 返回元组
return (movie_name,movie_time,movie_score)



四、总结撒花😊


本文主要讲解了如何解析学号姓名和获取电影的片名、上映时间和评分。😊

这就是今天要分享给大家的全部内容了,我们下期再见!😊

🏠 本文由初心原创,首发于CSDN博客, 博客主页:初心%🏠

🏠 我在CSDN等你哦!😍


相关文章
|
18天前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
73 0
|
2月前
|
数据采集 监控 Java
Python 函数式编程的执行效率:实际应用中的权衡
Python 函数式编程的执行效率:实际应用中的权衡
206 102
|
4月前
|
机器学习/深度学习 数据采集 算法
Python AutoML框架选型攻略:7个工具性能对比与应用指南
本文系统介绍了主流Python AutoML库的技术特点与适用场景,涵盖AutoGluon、PyCaret、TPOT、Auto-sklearn、H2O AutoML及AutoKeras等工具,帮助开发者根据项目需求高效选择自动化机器学习方案。
380 1
|
3月前
|
存储 数据可视化 BI
Python可视化应用——学生成绩分布柱状图展示
本程序使用Python读取Excel中的学生成绩数据,统计各分数段人数,并通过Matplotlib库绘制柱状图展示成绩分布。同时计算最高分、最低分及平均分,实现成绩可视化分析。
182 0
|
19天前
|
机器学习/深度学习 算法 安全
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
|
6月前
|
数据采集 监控 数据安全/隐私保护
Python正则表达式:用"模式密码"解锁复杂字符串
正则表达式是处理字符串的强大工具,本文以Python的`re`模块为核心,详细解析其原理与应用。从基础语法如字符类、量词到进阶技巧如贪婪匹配与预定义字符集,结合日志分析、数据清洗及网络爬虫等实战场景,展示正则表达式的强大功能。同时探讨性能优化策略(如预编译)和常见错误解决方案,帮助开发者高效掌握这一“瑞士军刀”。最后提醒,合理使用正则表达式,避免过度复杂化,追求简洁优雅的代码风格。
154 0
|
1月前
|
设计模式 缓存 运维
Python装饰器实战场景解析:从原理到应用的10个经典案例
Python装饰器是函数式编程的精华,通过10个实战场景,从日志记录、权限验证到插件系统,全面解析其应用。掌握装饰器,让代码更优雅、灵活,提升开发效率。
94 0
|
2月前
|
数据采集 存储 数据可视化
Python网络爬虫在环境保护中的应用:污染源监测数据抓取与分析
在环保领域,数据是决策基础,但分散在多个平台,获取困难。Python网络爬虫技术灵活高效,可自动化抓取空气质量、水质、污染源等数据,实现多平台整合、实时更新、结构化存储与异常预警。本文详解爬虫实战应用,涵盖技术选型、代码实现、反爬策略与数据分析,助力环保数据高效利用。
123 0
|
2月前
|
存储 程序员 数据处理
Python列表基础操作全解析:从创建到灵活应用
本文深入浅出地讲解了Python列表的各类操作,从创建、增删改查到遍历与性能优化,内容详实且贴近实战,适合初学者快速掌握这一核心数据结构。
183 0
|
2月前
|
中间件 机器人 API
Python多态实战:从基础到高阶的“魔法”应用指南
Python多态机制通过“鸭子类型”实现灵活接口,使不同对象统一调用同一方法,自动执行各自行为。它简化代码逻辑、提升扩展性,适用于数据处理、策略切换、接口适配等场景。掌握多态思维,能有效减少冗余判断,使程序更优雅、易维护。
126 0

热门文章

最新文章

推荐镜像

更多