重新子
實(shí)戰(zhàn)過程中,我們很多時(shí)候需要替換字符串中的字符,這時(shí)候就可以用到 def sub(pattern, repl, string, count=0, flags=0) 函數(shù)了,re.sub 共有五個(gè)參數(shù)。其中三個(gè)必選參數(shù):pattern, repl, string ; 兩個(gè)可選參數(shù):count, flags .
具體參數(shù)意義如下:
參數(shù) | 描述 |
pattern | 表示正則中的模式字符串 |
repl? | repl,就是replacement,被替換的字符串的意思 |
string? | 即表示要被處理,要被替換的那個(gè) string 字符串 |
count? | 對(duì)于pattern中匹配到的結(jié)果,count可以控制對(duì)前幾個(gè)group進(jìn)行替換 |
flags? | 正則表達(dá)式修飾符 |
具體使用可以看下下面的這個(gè)實(shí)例,注釋都寫的很清楚的了,主要是注意一下,第二個(gè)參數(shù)是可以傳遞一個(gè)函數(shù)的,這也是這個(gè)方法的強(qiáng)大之處,例如例子里面的函數(shù) convert ,對(duì)傳遞進(jìn)來要替換的字符進(jìn)行判斷,替換成不同的字符。
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- import re a = 'Python*Android*Java-888' # 把字符串中的 * 字符替換成 & 字符 sub1 = re.sub('\*', '&', a) print(sub1) # 把字符串中的第一個(gè) * 字符替換成 & 字符 sub2 = re.sub('\*', '&', a, 1) print(sub2) # 把字符串中的 * 字符替換成 & 字符,把字符 - 換成 | # 1、先定義一個(gè)函數(shù) def convert(value): group = value.group() if (group == '*'): return '&' elif (group == '-'): return '|' # 第二個(gè)參數(shù),要替換的字符可以為一個(gè)函數(shù) sub3 = re.sub('[\*-]', convert, a) print(sub3)
輸出的結(jié)果:
Python&Android&Java-888 Python&Android*Java-888 Python&Android&Java|888