一、写在前面✨
大家好!我是初心,希望我们一路走来能坚守初心!
今天跟大家分享的文章是 正则表达式的应用
,希望能帮助到大家!本篇文章收录于 初心 的 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等你哦!😍