我有以下文件“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中解决这个问题。
我也想知道是否有更好的方法解决这个问题。
答案 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/
创建模板