字符串的替换(interpolation), 可以使用string.Template, 也可以使用标准字符串的拼接.
string.Template标示替换的字符, 使用"$"符号, 或 在字符串内, 使用"${}"; 调用时使用string.substitute(dict)函数.
标准字符串拼接, 使用"%()s"的符号, 调用时, 使用string%dict方法.
两者都可以进行字符的替换.
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# -*- coding: utf-8 -*- import string values = { 'var' : 'foo' } tem = string.Template( ''''' Variable : $var Escape : $$ Variable in text : ${var}iable ''' ) print 'TEMPLATE:' , tem.substitute(values) str = ''''' Variable : %(var)s Escape : %% Variable in text : %(var)siable ''' print 'INTERPOLATION:' , str % values |
输出:
1
2
3
4
5
6
7
8
9
|
TEMPLATE: Variable : foo Escape : $ Variable in text : fooiable INTERPOLATION: Variable : foo Escape : % Variable in text : fooiable |
连续替换(replace)的正则表达式(re)
字符串连续替换, 可以连续使用replace, 也可以使用正则表达式.
正则表达式, 通过字典的样式, key为待替换, value为替换成, 进行一次替换即可.
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# -*- coding: utf-8 -*- import re my_str = "(condition1) and --condition2--" print my_str.replace( "condition1" , " ").replace(" condition2 ", " text") rep = { "condition1" : " ", " condition2 ": " text"} rep = dict ((re.escape(k), v) for k, v in rep.iteritems()) pattern = re. compile ( "|" .join(rep.keys())) my_str = pattern.sub( lambda m: rep[re.escape(m.group( 0 ))], my_str) print my_str |
输出:
1
2
|
() and --text-- () and --text-- |