python re 高级用法
这个模块提供类似于佩尔的正则表达式匹配操作。 它支持8位和 Unicode 字符串; 正在处理的模式和字符串都可以包含空字节和 US ASCII 范围之外的字符。 正则表达式可以包含特殊字符和普通字符。 大多数普通字符,如“ a”、“ a”或“0” ,都是最简单的正则表达式; 它们只是匹配自己。 可以连接普通字符,所以 last 匹配字符串‘ last’。
比较常用的方法
search
import re
help(re.search)
ret = re.search("\\d+", "阅读次数为 9999")
print(ret.group())
运行结果
findall
import re
help(re.findall)
ret = re.findall("\\d+", "python = 9999, c = 7890, c++ = 12345")
print(ret)
sub 将匹配到的数据进行替换
import re
help(re.sub)
ret = re.sub("\\d+","996", "python = 9999, c = 7890, c++ = 12345")
print(ret)
split 根据匹配进行切割字符串,并返回一个列表
import re
help(re.split)
ret = re.split(":| ","info:xiaoZhang 33 shandong")
print(ret)
从拉勾网爬取一份HTML保存到123.txt,然后从字符串中取出文本
<div>
<p>岗位职责:</p>
<p>完成推荐算法、数据统计、接口、后台等服务器端相关工作</p>
<p><br></p>
<p>必备要求:</p>
<p>良好的自我驱动力和职业素养,工作积极主动、结果导向</p>
<p> <br></p>
<p>技术要求:</p>
<p>1、一年以上 Python 开发经验,掌握面向对象分析和设计,了解设计模式</p>
<p>2、掌握HTTP协议,熟悉MVC、MVVM等概念以及相关WEB开发框架</p>
<p>3、掌握关系数据库开发设计,掌握 SQL,熟练使用 MySQL/PostgreSQL 中的一种<br></p>
<p>4、掌握NoSQL、MQ,熟练使用对应技术解决方案</p>
<p>5、熟悉 Javascript/CSS/HTML5,JQuery、React、Vue.js</p>
<p> <br></p>
<p>加分项:</p>
<p>大数据,数理统计,机器学习,sklearn,高性能,大并发。</p>
</div>
实现代码
import re
def read(file_name):
try:
f=open(file_name)
except Exception as e:
return ""
else:
f_t=f.read()
print("读取到:\n%s"%f_t)
return f_t
def flie_sub(law,file_txt):
ret=re.sub(law,"",file_txt)
if ret:
print(ret)
# for x in ret.groups():
#
else:
# print("%s没有发现匹配:%s"%(law,file_txt))
print("*"*40)
file_txt=read("123.txt").splitlines()
print("返回:%s\n"%file_txt)
help(re.sub)
for x in file_txt:
flie_sub("<\\w*>|</\\w*>| ",x)