
Python 正则表达式 对应实例 从教务处展示成绩页面的表格源代码中 获取课程、学分、成绩
通过观察我们发现了想要内容左右代码的共同之处。
翻车了!
还有其他带着cj’'的标签,于是经过更改(让匹配更详细即可)
发布日期:2021-05-06 22:50:21
浏览次数:25
分类:技术文章
本文共 2295 字,大约阅读时间需要 7 分钟。
在我看来re模块是一个很实用、很重要的模块,可以帮我们过滤不想要的字符。而且很灵活,越用越上瘾。
感觉我找到的教程都不太好,有的只有罗列式子,没有实例很抽象。
自己整理一下,方便自己看,也供大家参考。
目前还未整理完,也没有按顺序,只是个开始。
传送门:
re.sub 过滤/去除指定内容 re.findall 找到想要的内容re.sub函数:
re.sub(正则匹配表达式,匹配后要替换的字符,原字符串)
正则匹配表达式: | r’[填入以下式子]’ |
---|---|
匹配数字 | \d |
非数字 | \D |
非标点符号 | \w |
标点符号 | \W |
汉字 | \u4e00-\u9fa5 |
任意单个字符 | 直接写单个字符 |
如果只用一个条件,可以不加列表[],即:r’\d’ 跟r’[\d]’ 效果是一样的
但匹配汉字要加,即:r’[\u4e00-\u9fa5]’
所以建议直接加上[]。匹配多个条件,我既匹配数字,又要汉字的话,用逗号隔开就好。
r’[ \d, \u4e00-\u9fa5 ]’其实r可加可不加!自己删掉试试?
示例:
import re#原字符串string = "hello world! I'm glad to see you here. This is 404detecitve. 你好,世界!我很高兴在这见到你。"#匹配e,替换为E。replacedString = re.sub(r'[a]', "A", string)#输出:hEllo world! I'm glad to sEE you hErE. This is 404dEtEcitvE. 你好,世界!我很高兴在这见到你。#匹配汉字,替换为空(删除)。replacedString = re.sub(r'[\u4e00-\u9fa5]', "", string)#输出:hello world! I'm glad to see you here. This is 404detecitve. ,!。#匹配标点符号,替换为空格。(注意' '里面有空格,跟上面不一样!)replacedString = re.sub(r'[\W]', " ", string)#输出:hello world I m glad to see you here This is 404detecitve 你好 世界 我很高兴在这见到你print("replacedString = ", replacedString)
re.findall函数:
re.findall(正则匹配表达式,原字符串,其他修饰条件)
找到后放入列表返回
如果我们想要的东西在<>里面
<内容> 我们可以用r’<(.*?)>'来匹配它修饰条件: | 含义 |
---|---|
re.I | 匹配对大小写不敏感 |
re.S | 匹配包括换行在内的所有字符(把换行表示为字符\n) |
示例:
r可加可不加!上面加了,下面就不加了
string = '''12 23 34 12< f>23 34 ''' No_S = re.findall('<(.*?)>',string) Yes_S = re.findall('<(.*?)>',string,re.S) print ('No_re.S is ' ,No_S) #No_re.S is ['aa', 'b', 'c', 'd', 'g', 'h'] !!!不加re.S只能匹配第一个\n(换行)之前的内容!!! 所以没有e print ('Yes_re.S is ' ,Yes_S) #Yes_re.S is ['aa', 'b', 'c', 'd', 'e\n', '\nf', 'g', 'h']
取一下教务处里的成绩,我将展示成绩的页面表格部分代码copy在了记事本里。

代码如下:
import rewith open('re.txt','r',encoding='utf-8') as f: string=(f.read()) #print(txt) course=re.findall('kcmc">(.*?)',string)print ('课程为 ' ,course)课程为 ['军事理论及训练', '大学计算机基础实验', '高等数学A1', '思想道德修养与法律基础', '马克思主义基本原理', '普通体育课1', '大学生生涯规划', '大学英语B1', '大学计算机基础', '工程制图与电气CAD']credit=re.findall('xf">(.*?)',string)print ('学分为 ' ,credit)学分为 ['1.0', '0.5', '5', '2', '3', '1', '0.5', '2', '1.5', '2.5']grade=re.findall('cj">(.*?)',string)print ('成绩为 ' ,grade)成绩为 ['95', '95', '优秀', '95', '99', '99', '90', '90', '85', '85', '93', '93', '92', '92', '99', '99', '94', '94', '93', '93']
效果如下



not end
未完待续…发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年03月15日 16时57分31秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2021-ICPD昆明站-I Mr. Main and Windmills
2019-03-01
1144. The Missing Number (20)
2019-03-01
Qt Creator编码
2019-03-01
【今日CV 计算机视觉论文速览 第97期】Tue, 9 Apr 2019
2019-03-01
第1讲 快速入门 《Kotlin 极简教程 》
2019-03-01
云计算-大数据-云安全高等教育改革示范教材
2019-03-01
使用MaxCompute进行数据质量核查
2019-03-01
Java语言特点与学习
2019-03-01
夜光精讲 Opentcs 三大算法(十三)调度算法
2019-03-01
BCGControlBar教程:应用向导
2019-03-01
MyEclipse教程:Web开发——部署并测试项目
2019-03-01
【更新】CLion v2018.3发布(六):VCS和插件
2019-03-01
文件服务器——src文件夹
2019-03-01
从零构建通讯器--5.2三次握手,telnet,wireshark
2019-03-01
如何判断两个浮点数是否相等?
2019-03-01
2021牛客寒假算法基础集训营3
2019-03-01
苹果进军搜索,背后藏着什么“阳谋”?
2019-03-01
egg:如何在控制器中拿到前端传的参数
2019-03-01