python中快速進行多個字元替換的方法小結
先給出結論:
- 要替換的字元數量不多時,可以直接鏈式
replace()
方法進行替換,效率非常高; - 如果要替換的字元數量較多,則推薦在 for 迴圈中呼叫
replace()
進行替換。
可行的方法:
1. 鏈式replace()
1 | string.replace().replace() |
1.x 在for
迴圈中呼叫replace()
「在要替換的字元較多時」
2. 使用string.maketrans
3. 先 re.compile 然後 re.sub
……
?123456789101112131415161718192021222324252627282930 | def a(text): chars = "&#" for c in chars: text = text.replace(c, "\\" + c) def b(text): for ch in [ '&' , '#' ]: if ch in text: text = text.replace(ch, "\\" + ch) import re def c(text): rx = re. compile ( '([&#])' ) text = rx.sub(r '\\\1' , text) RX = re. compile ( '([&#])' ) def d(text): text = RX.sub(r '\\\1' , text) def mk_esc(esc_chars): return lambda s: ' '.join([' \\' + c if c in esc_chars else c for c in s]) esc = mk_esc( '&#' ) def e(text): esc(text) def f(text): text = text.replace( '&' , '\&' ).replace( '#' , '\#' ) def g(text): replacements = { "&" : "\&" , "#" : "\#" } text = "".join([replacements.get(c, c) for c in text]) def h(text): text = text.replace( '&'
|