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


相关文章
|
7天前
|
Python
python增量赋值运算的应用
Python中的增量赋值运算符用于便捷地执行算术操作,如`+=`, `-=`等,它们分别代表加法、减法、乘法、除法、取模、整除和幂运算。
10 1
|
11天前
|
Python
Python文件操作学习应用案例详解
【4月更文挑战第7天】Python文件操作包括打开、读取、写入和关闭文件。使用`open()`函数以指定模式(如'r'、'w'、'a'或'r+')打开文件,然后用`read()`读取全部内容,`readline()`逐行读取,`write()`写入字符串。最后,别忘了用`close()`关闭文件,确保资源释放。
17 1
|
23天前
|
开发者 Python 容器
深入理解Python迭代器:迭代机制的核心与应用
本文介绍了Python迭代器的核心概念、工作原理和应用场景。迭代器是遍历容器类型数据结构(如列表、元组、字典和集合)的对象,遵循迭代器协议,具有记忆遍历位置和一次性特点。通过实现迭代器协议,开发者能为自定义类型定义迭代行为,实现高效处理大量数据和与其他迭代工具协同工作。迭代器与可迭代对象的区别在于,可迭代对象实现`__iter__()`方法,返回迭代器,而迭代器实现`__next__()`方法,用于逐个访问元素。理解并运用迭代器能提升Python代码的性能和可读性。
|
18天前
|
存储 缓存 算法
Python中collections模块的deque双端队列:深入解析与应用
在Python的`collections`模块中,`deque`(双端队列)是一个线程安全、快速添加和删除元素的双端队列数据类型。它支持从队列的两端添加和弹出元素,提供了比列表更高的效率,特别是在处理大型数据集时。本文将详细解析`deque`的原理、使用方法以及它在各种场景中的应用。
|
6天前
|
机器学习/深度学习 人工智能 算法
图像处理与分析:Python中的计算机视觉应用
【4月更文挑战第12天】Python在计算机视觉领域广泛应用,得益于其丰富的库(如OpenCV、Pillow、Scikit-image)和跨平台特性。图像处理基本流程包括获取、预处理、特征提取、分类识别及重建生成。示例代码展示了面部和物体检测,以及使用GAN进行图像生成。
|
1天前
|
机器学习/深度学习 数据采集 供应链
从数据到决策:scikit-learn在业务分析中的应用
【4月更文挑战第17天】本文探讨了scikit-learn在业务分析中的应用,包括数据预处理、分类、回归和聚类模型的构建,以及模型评估与优化。通过使用scikit-learn,企业能有效处理数据、预测趋势、客户细分并制定决策,从而提升经营效率和市场策略。随着机器学习的发展,scikit-learn在业务分析领域的潜力将持续释放,创造更多价值。
|
3天前
|
API 调度 开发者
深入理解Python异步编程:从Asyncio到实战应用
在现代软件开发中,异步编程技术已成为提升应用性能和响应速度的关键策略。本文将通过实例讲解Python中的异步编程核心库Asyncio的基本概念、关键功能以及其在Web开发中的应用。我们不仅将理论与实践结合,还将展示如何通过实际代码示例解决常见的并发问题,帮助开发者更有效地利用Python进行异步编程。
|
4天前
|
数据库 开发者 Python
Python中使用Flask构建简单Web应用的例子
【4月更文挑战第15天】Flask是一个轻量级的Python Web框架,它允许开发者快速搭建Web应用,同时保持代码的简洁和清晰。下面,我们将通过一个简单的例子来展示如何在Python中使用Flask创建一个基本的Web应用。
|
5天前
|
SQL API 数据库
Python中的SQLAlchemy框架:深度解析与实战应用
【4月更文挑战第13天】在Python的众多ORM(对象关系映射)框架中,SQLAlchemy以其功能强大、灵活性和易扩展性脱颖而出,成为许多开发者首选的数据库操作工具。本文将深入探讨SQLAlchemy的核心概念、功能特点以及实战应用,帮助读者更好地理解和使用这一框架。
|
11天前
|
Python
Python数据类型学习应用案例详解
Python基础数据类型包括整数(int)、浮点数(float)、字符串(str)、布尔值(bool)、列表(list)、元组(tuple)、字典(dict)和集合(set)。整数和浮点数支持算术运算,字符串是不可变的文本,布尔值用于逻辑判断。列表是可变有序集合,元组不可变。字典是键值对的无序集合,可变,而集合是唯一元素的无序集合,同样可变。示例代码展示了这些类型的基本操作。
10 1

热门文章

最新文章