Python3-正则表达式-部分替换

1、局部替换

re.sub+lambda

  • 注意:不能用$
import re
aa = '【菊部】替换,【a】和【1】不替换'
a = re.sub('【([\u4e00-\u9fa5]+)】', lambda x: x.group(1), aa)

替换前:【菊部】替换,【a】和【1】不替换
替换后:菊部替换,【a】和【1】不替换

import re
aa = '简直,,,,无语。。。。极了!!!'
a = re.sub('[,。!]+', lambda x: x[0][0], aa)
print(a)
打印结果
简直,无语。极了!
headers = '''
GET /Yellow_python HTTP/1.1
Connection: keep-alive
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
'''
d = re.sub('(.+?): (.+)',
           lambda x: "'{}': '{}',".format(x.group(1), x.group(2)),
           headers)
print(d)
打印结果
GET /Yellow_python HTTP/1.1
‘Connection’: ‘keep-alive’,
‘Accept-Encoding’: ‘gzip, deflate, br’,
‘Accept-Language’: ‘zh-CN,zh;q=0.9’,

Pycharm正则替换

在这里插入图片描述

英文分词

import re
s = 'i o u! u 2?'
s = re.sub('([.!?])', ' \\1', s)  # re.sub(r'([.!?])', r' \1', s)
print(s)

i o u ! u 2 ?

2、补充一些re基础

分组

import re
text = '鸡蛋10元6个,咸蛋9元11个'
pattern = '(?P<cost>\d+)元(?P<count>\d+)个'
ls = re.findall(pattern, text)
print(ls)

[(‘10’, ‘6’), (‘9’, ‘11’)]

import re
text = '鸡蛋10元6个'
pattern = '(?P<cost>\d+)元(?P<count>\d+)个'  # 给分组命名
SRE_Match = re.search(pattern, text)
print(SRE_Match.groups())
print(SRE_Match.group('cost'))
print(SRE_Match.group('count'))

(‘10’, ‘6’)
10
6

re.sub

  • sub(pattern, repl, string, count=0, flags=0)
参数解析
pattern正则中的模式字符串
repl替换的字符串,也可为一个函数
string要被查找替换的原始字符串。
count替换的最大次数,默认全部替换
import re
text = '9-12k/月'
pat = '(?P<digit>\d+)'

def double(re_obj):
    salary = int(re_obj.group('digit'))
    return str(salary * 2)

rs = re.sub(pat, double, text)
print(rs)

18-24k/月

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值