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

文章目录

  • 1、局部替换
    • re.sub+lambda
    • Pycharm正则替换
    • 英文分词
  • 2、补充一些re基础
    • 分组
    • re.sub

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正则替换

Python3-正则表达式-部分替换_第1张图片

英文分词

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\d+)元(?P\d+)个'
ls = re.findall(pattern, text)
print(ls)

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

import re
text = '鸡蛋10元6个'
pattern = '(?P\d+)元(?P\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\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/月

你可能感兴趣的:(数据处理)