Python中的字符串替换操作示例

1296次阅读  |  发布于5年以前

字符串的替换(interpolation), 可以使用string.Template, 也可以使用标准字符串的拼接.
string.Template标示替换的字符, 使用"$"符号, 或 在字符串内, 使用"${}"; 调用时使用string.substitute(dict)函数.
标准字符串拼接, 使用"%()s"的符号, 调用时, 使用string%dict方法.
两者都可以进行字符的替换.

代码:


    # -*- 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 

输出:


    TEMPLATE:  
    Variable : foo 
    Escape : $ 
    Variable in text : fooiable 

    INTERPOLATION:  
    Variable : foo 
    Escape : % 
    Variable in text : fooiable 

连续替换(replace)的正则表达式(re)
字符串连续替换, 可以连续使用replace, 也可以使用正则表达式.
正则表达式, 通过字典的样式, key为待替换, value为替换成, 进行一次替换即可.

代码


    # -*- 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

输出:


    () and --text--
    () and --text--

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8