python 正则表达式

1、如何提取工资名称,以及工资金额? 如:上海正中能源科技有限公司 2.50万

content = '''
大数据项目经理(上海正中能源科技有限公司) 上海正中能源科技有限公司上海 2.50万/每月
大数据项目经理(上海众调信息科技有限公司) 上海众调信息科技有限公司上海 1.8万/月
大数据项目经理(03)(复深蓝软件) 上海复深蓝软件股份有限公司上海0.65万/每月
393197-大数据精算团队主管(平安医疗健康管理股份有限公司) 平安医疗健康管理股份有限公司上海 3.3333万/月
医疗大数据销售 神州医疗投资有限公司东城区 8000万/每月
393185-大数据运维工程师(平安医疗健康管理股份有限公司) 平安医疗健康管理股份有限公司上海 28000万/每月 '''   

import re
for one  in re.findall(r'([上海|平安].*?公司).*?([\d.]+万)/每{0,1}月', content):
    print(one[0]+" "+one[1])

2、如何提取出 所有的姓名和成绩,打印出来 。例如“张三 89”
并找出最高分同学的姓名以及成绩

content = '''
张三,成绩89,手机号码15978965201
李四,成绩78,手机号码17158258889
王二,成绩99,手机号码16893477422 '''   
score = []
for one  in re.findall(r'(.+?),成绩(\d{2})', content):
    print(one[0]+" "+one[1])
    score.append(one)
    
score = sorted(score,key=lambda x:x[1])   
print("最高分:{},成绩:{}".format(score[-1][0],score[-1][1]))

3、当当网站上python相关书籍信息,需要替换span rel的编号,将原来编号倒序,并去除掉第一位数字,如何实现?

例如:8589934632 236439985

content = '''<span rel="8589934632"><a href="/?key=python&act=input&att=s8589934592%3A8589934632#J_tab"   title="人民邮电出版社"><em></em>人民邮电出版社</a></span>
<span rel="8589934622"><a href="/?key=python&act=input&att=s8589934592%3A8589934622#J_tab"   title="机械工业出版社"><em></em>机械工业出版社</a></span>
<span rel="8589934624"><a href="/?key=python&act=input&att=s8589934592%3A8589934624#J_tab"   title="清华大学出版社"><em></em>清华大学出版社</a></span>
<span rel="8589934617"><a href="/?key=python&act=input&att=s8589934592%3A8589934617#J_tab"   title="电子工业出版社"><em></em>电子工业出版社</a></span>
<span rel="8589934697"><a href="/?key=python&act=input&att=s8589934592%3A8589934697#J_tab"   title="中国水利水电出版社"><em></em>中国水利水电出版社</a></span>
<span rel="8589934618"><a href="/?key=python&act=input&att=s8589934592%3A8589934618#J_tab"   title="高等教育出版社"><em></em>高等教育出版社</a></span>
<span rel="8589934854"><a href="/?key=python&act=input&att=s8589934592%3A8589934854#J_tab"   title="东南大学出版社"><em></em>东南大学出版社</a></span>
'''


a = re.findall(r'rel="(\d{10})">', content)
b = [] 
for i in a:
    b.append(i[::-1][:-1]) 
c = [i for i in content.split("\n") if i != '']

for i in range(len(c)):
    d = re.sub(r'\"8589\d*\"',b[i], c[i])
    print(d)

4、病例解析
张三,1965-3-12,是脑卒中病, 手机号码15978965201
李四,1958-5-4,是高血脂病,手机号码17158258889
苏齐,1944-5-2,是肺结核病,手机号码16893477422
王五,1996-2-1,是肾炎,手机号码15895552422
孙六,1993-1-1,是肝炎,手机号码1936855422
黄黄,1988-11-23,

要求:

步骤1找出所有的年月日,替换成1965年3月12日

content = '''
张三,1965年3月12日,是脑卒中病, 手机号码15978965201
李四,1965年3月12日,是高血脂病,手机号码17158258889
苏齐,1965年3月12日,是肺结核病,手机号码16893477422
王五,1965年3月12日,是肾炎,手机号码15895552422
孙六,1965年3月12日,是肝炎,手机号码1936855422
黄黄,1965年3月12日,'''   
    
content = re.sub(r'\d{4}-\d{1,2}-\d{1,2}','1965年3月12日', content)
print(content)
步骤2,提取所有行,格式为:姓名出生年月电话号码
格式:          姓名:张三,出生年月1965312日,15978965201

info = []      
for one  in re.findall(r'(.+?),(\d{4}年\d{1,2}月\d{1,2}日),是.*手机号码{0,1}(\d{1,11})|(.+?),(\d{4}年\d{1,2}月\d{1,2}日)', content):
    info.append([i for i in one if i !=''])

for i in range(len(info)):
    if i < len(info)-1:
        print("姓名:{},出生年月{},{}".format(info[i][0],info[i][1],info[i][2]))  
    else:
        print("姓名:{},出生年月{}".format(info[i][0],info[i][1]))

5、使用正则表达式,找出一下密码所有符合规则的密码:

1),长度为8-15
2),以字母开头
3),密码可以包括数字、字母、下划线、井号、感叹号和星号

content = '''
dfajipqjgif56974*/524351
145g84546sa!$#
35784443198
89/*12!
POIIr/*3+
dafafd$#$#$#
jfasd89
###-=-09)
Ilovechina!666
Sumhs2345/2342%
hhihihi!@%&^
Z/*#! '''  
    
pattern = r'^[a-zA-Z][\w!#*]{8,15}'
result = re.findall(pattern, content, re.M)
info= content.split("\n")
for i in result:
    if i in info:
        print(i)
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_44322234

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值