先给出结论:
- 要替换的字符数量不多时,可以直接链式
replace()
方法进行替换,效率非常高; - 如果要替换的字符数量较多,则推荐在 for 循环中调用
replace()
进行替换。
可行的方法:
1. 链式replace()
1
|
string.replace().replace()
|
1.x 在for
循环中调用replace()
「在要替换的字符较多时」
2. 使用string.maketrans
3. 先 re.compile 然后 re.sub
……
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
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(
'&'
, r
'\&'
)
text
=
text.replace(
'#'
, r
'\#'
)
def
i(text):
text
=
text.replace(
'&'
, r
'\&'
).replace(
'#'
, r
'\#'
)
|
参考链接:
http://stackoverflow.com/questions/3411771/multiple-character-replace-with-python
http://stackoverflow.com/questions/6116978/python-replace-multiple-strings
http://stackoverflow.com/questions/8687018/python-string-replace-two-things-at-once
http://stackoverflow.com/questions/28775049/most-efficient-way-to-replace-multiple-characters-in-a-string
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用python能有所帮在,如果有疑问大家可以留言交流。