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/月
本文深入探讨了正则表达式的实用技巧,包括局部替换、英文分词、基础分组等,通过具体示例展示了如何使用re.sub结合lambda函数进行高效文本处理。同时,文章还介绍了如何利用正则表达式进行分词、数据抽取和格式调整,适用于各种文本处理场景。
573

被折叠的 条评论
为什么被折叠?



