0

我有以下文件“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 中解决这个问题。

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

4

1 回答 1

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/

于 2013-10-12T16:13:57.757 回答