使用python搜索和替换

时间:2013-10-12 15:48:09

标签: python

我有以下文件“template.txt”

function FA()
{
    if(){...}
    message=[msg]
    message=[msg]
}
function FB()
{
    if(){...}
    message=[msg]
    message=[msg]
}
function FC()
{
    if(){...}
    message=[msg]
    message=[msg]
}

我想这样做:

./script.py --function FB --message TEST

得到这个结果:

function FA()
{
    if(){...}
    message=[msg]
    message=[msg]
}
function FB()
{
    if(){...}
    message=TEST
    message=TEST
}
function FC()
{
    if(){...}
    message=[msg]
    message=[msg]
}

我现在可以使用getopt正确检索所有选项和参数,但我无法弄清楚如何优雅地实现上述行为。有任何想法吗?是否有任何图书馆可以帮助我解决这个问题?

我能够使用AWK实现此行为但现在我需要它在python中。在AWK中,您可以转到特定的行(例如函数FC())并从那里开始替换,直到您点击另一个函数。我似乎无法在python中解决这个问题。

我也想知道是否有更好的方法解决这个问题。

1 个答案:

答案 0 :(得分:1)

一旦你得到你的变量,并让他们正确消毒,你可以做这样的事情。

def templater(template,function,message):
    template = template.split('function')
    for i,f in enumerate(template):
        if function in f:
            template[i] = f.replace('[msg]',message)
    return 'function'.join(template)

编辑:    至于更好的方法,您应该考虑使用格式化迷你语言http://docs.python.org/2/library/string.html#formatspec或实际的模板语言(如jinja2 http://jinja.pocoo.org/docs/

创建模板