python正则表达式:re模块实现(概念+实例)

python正则表达式的实现

1.正则表达式的基本概念

  正则表达式是一个特殊的字符序列,它能帮助我们方便的检查一个字符串是否与某种模式匹配。尤其是对于大段的文本来说,正则表达式能够快速提取我们想要的信息。
  re 模块使 Python 语言拥有全部的正则表达式功能, re 模块提供了一些函数,使用一个模式字符串做为它们的第一个参数,用以匹配出某种模式。
  本文的实例将通过re模块来在python实现正则表达式,文末会逐渐增加一些re模块的讲解,平时要写作业,可能更新较慢。想要了解re模块的更多信息可以在Python中运行help(re)

2.数据集的展示

  首先我们先展示一下数据集(model.txt),数据集中包含booster[ ],以及每个booster包含的leaf。从图片中可以看出数据集的结构杂乱无章,无法快速获得自己想要的数据。
在这里插入图片描述

3.利用正则表达式希望实现的操作

通过正则表达式我们希望实现
1、根据leaf.txt定位到model.txt中每个booster的结点,并获取leaf的值,如booster[0]中选择结点166的leaf值为-0.20339
2、把获取到的100个节点的leaf值存储到一个txt文件中
ps:leaf.txt 为一百个随机数字
在这里插入图片描述

4.代码实现

以下是代码实现,从每个booster[ ]中将所需要的结点提取出来

import re
#读取文件
f=open('d:\model.txt','r')
g=open('d:\leaf.txt','r')
lines1=f.read()
lines2=g.read()
#准备数据
line_2=lines2.split(' ')
out_file = open('d:\out_file.txt','w')
list1= lines1.split('booster')
for i in line_2:
    if i=='':
        line_2.remove(i)
    else:
        column2=i.replace('\n','')
        line_2[line_2.index(i)]=column2
#通过正则表达式进行匹配
y=[]
for j in range(0,100):
    leaf=line_2[j]+':leaf=(.+)'
    out=re.search(leaf,list1[j+1])
    out_file.write('booster[{}]:'.format(j)+'%s\n'%str(out.group()))#将结果输出
    y.append(out.group())
f.close()
g.close()
out_file.close()

5.输出结果

在这里插入图片描述

re模块的讲解

1.re通配符

  正则表达式中使用点号‘ . ’匹配任何字符(换行符除外),例如:‘.ython’,可以匹配字符串‘python’、’jython’、‘+ython’或者‘ ython’(第一个字母是空格),但是不会配’cpython’或者‘ython’这样的空符串,即点号只能匹配一个字母,而不是多个或者零个。
  假设需要匹配字符串‘baidu.com’,直接用‘baidu.com’模式不仅会匹配‘baidu.com’,也会匹配‘baiduzcom’。为了让特殊字符表现得像普通字符一样,需要对它进行转义(escape),可以在它前面加上反斜线‘baidu\.com’

2.re字符集

  使用中括号括住字符串来创建字符集。字符集可以匹配它所包括的任意字符,所以‘[pj]ython’能够匹配‘python’和‘jython’。
  可以使用范围,例如‘[a-z]’能够匹配a到z的任意一个字符,还可以通过一个接一个的方式将范围联合起来使用,例如‘[a-zA-Z0-9]’,能够匹配任意大小写字母和数字
Ps:字符集只能匹配一个这样的字符

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值