python中re模塊下的sub方法替換字符串匹配值為函數


Python 的 re 模塊提供了re.sub用於替換字符串中的匹配項,該方法除了能將字符串中的匹配項替換成其他字符串,還可以使用函數來進行替換。

 

 1 #!/usr/bin/python
 2 # -*- coding: UTF-8 -*-
 3 
 4 import re
 5 
 6 
 7 def double(matched):                               # 定義函數double
 8     print(matched)                                 # 測試語句,打印matched的值
 9     values = int(matched.group('value'))           # 將語句相應的數組里面取到的值轉換成整數類型后賦值給變量values,因為原先的值是str類型,要轉換為整數后才能進行后面的乘法計算
10     print(values)                                  # 測試語句,打印values的值
11     return str(values*2)                           # 將values的值乘以2后轉換為字符串類型,如果不轉換成字符串,在下面使用這個函數的替換字符串里面的值時候會報錯
12 
13 
14 s = '23G4HFD567'                                   # 定義一個字符串變量s
15 ss = re.search(r'(?P<name>\d+)', s)                # 定義變量ss,值是在字符串變量s中匹配數字,取匹配到的第一個值,\d匹配數字,即0-9,后面的+符號是指將連續的數字當成一個匹配值
16 print(ss)                                          # 測試語句,打印變量ss的值
17 print(ss.group('name'))                            # 通過數組名稱name打印出對應的值,數組名稱name是在上面的?P<name>中定義的
18 print("下面是使用double函數替換字符串中匹配的值")                             # 測試語句,打印一行字,方便查看打印結果
19 print(re.sub('(?P<value>\d+)', double, s))         # 用double函數的值替換字符串s中對應的匹配項,也就是將字符串s中匹配到的所有數字乘以2

打印結果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\python.exe C:/Users/Administrator/Desktop/mypython/test.py
<_sre.SRE_Match object; span=(0, 2), match='23'>
23
下面是使用double函數替換字符串中匹配的值
<_sre.SRE_Match object; span=(0, 2), match='23'>
23
<_sre.SRE_Match object; span=(3, 4), match='4'>
4
<_sre.SRE_Match object; span=(7, 10), match='567'>
567
46G8HFD1134

進程已結束,退出代碼0

從打印結果中可以看出,替換的值是double這個函數時,傳入double函數的參數matched的值是一個類似re.search方法的語句。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM