【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等你哦!😍


相关文章
|
1天前
|
SQL 安全 数据库
构建安全的Python Web应用是一项持续的努力,需要开发者时刻保持警惕,并采用最佳实践来预防各种安全威胁
【7月更文挑战第26天】构建安全的Python Web应用是一项持续的努力,需要开发者时刻保持警惕,并采用最佳实践来预防各种安全威胁
|
4天前
|
机器学习/深度学习 数据采集 算法
Python编程语言进阶学习:深入探索与高级应用
【7月更文挑战第23天】Python的进阶学习是一个不断探索和实践的过程。通过深入学习高级数据结构、面向对象编程、并发编程、性能优化以及在实际项目中的应用,你将能够更加熟练地运用Python解决复杂问题,并在编程道路上走得更远。记住,理论知识只是基础,真正的成长来自于不断的实践和反思。
|
2天前
|
开发者 Python
Python Socket编程:不只是基础,更有进阶秘籍,让你的网络应用飞起来!
【7月更文挑战第25天】在网络应用蓬勃发展的数字时代,Python凭借其简洁的语法和强大的库支持成为开发高效应用的首选。本文通过实时聊天室案例,介绍了Python Socket编程的基础与进阶技巧,包括服务器与客户端的建立、数据交换等基础篇内容,以及使用多线程和异步IO提升性能的进阶篇。基础示例展示了服务器端监听连接请求、接收转发消息,客户端连接服务器并收发消息的过程。进阶部分讨论了如何利用Python的`threading`模块和`asyncio`库来处理多客户端连接,提高应用的并发处理能力和响应速度。掌握这些技能,能使开发者在网络编程领域更加游刃有余,构建出高性能的应用程序。
10 3
|
5天前
|
机器学习/深度学习 数据可视化 数据挖掘
数据可视化大不同!Python数据分析与机器学习中的Matplotlib、Seaborn应用新视角!
【7月更文挑战第22天】数据可视化在Python数据科学中至关重要,Matplotlib和Seaborn提供强大工具。案例展示如何用它们分析房屋售价数据:Matplotlib绘制面积与售价散点图揭示正相关,Seaborn的pairplot展示多变量关系。在建模阶段,特征重要性通过条形图可视化,辅助模型优化。这两库是理解数据和提升模型性能的关键。
19 3
|
10天前
|
前端开发 JavaScript API
探索Python Django中的WebSocket集成:为前后端分离应用添加实时通信功能
【7月更文挑战第17天】现代Web开发趋势中,前后端分离配合WebSocket满足实时通信需求。Django Channels扩展了Django,支持WebSocket连接和异步功能。通过安装Channels、配置设置、定义路由和消费者,能在Django中实现WebSocket交互。前端使用WebSocket API连接后端,实现双向数据流,如在线聊天功能。集成Channels提升Web应用的实时性和用户体验,适应实时交互场景的需求。**
36 6
|
11天前
|
并行计算 监控 数据处理
构建高效Python应用:并发与异步编程的实战秘籍,IO与CPU密集型任务一网打尽!
【7月更文挑战第16天】Python并发异步提升性能:使用`asyncio`处理IO密集型任务,如网络请求,借助事件循环实现非阻塞;`multiprocessing`模块用于CPU密集型任务,绕过GIL进行并行计算。通过任务类型识别、任务分割、避免共享状态、利用现代库和性能调优,实现高效编程。示例代码展示异步HTTP请求和多进程数据处理。
26 8
|
10天前
|
JavaScript 前端开发 网络协议
从理论到实践:全面剖析Python Web应用中的WebSocket实时通信机制
【7月更文挑战第17天】WebSocket在实时Web应用中扮演重要角色,提供全双工通信,减少延迟。本文详述了Python中使用`websockets`库创建服务器的步骤,展示了一个简单的echo服务器示例,监听8765端口,接收并回显客户端消息。客户端通过JavaScript与服务器交互,实现双向通信。了解WebSocket的握手、传输和关闭阶段,有助于开发者有效利用WebSocket提升应用性能。随着实时需求增长,掌握WebSocket技术至关重要。
37 6
|
6天前
|
算法 数据处理 索引
告别低效搜索!Python中Trie树与Suffix Tree的实战应用秘籍!
【7月更文挑战第21天】探索Python中的字符串搜索效率提升:使用Trie树与Suffix Tree。Trie树优化单词查询,插入和删除,示例展示其插入与搜索功能。Suffix Tree,复杂但强大,适用于快速查找、LCP查询。安装[pysuffixtree](https://pypi.org/project/pysuffixtree/)库后,演示查找子串及最长公共后缀。两者在字符串处理中发挥关键作用,提升数据处理效率。**