用msg替换cmd中的param

时间:2014-07-28 10:15:58

标签: python regex

如何将命令数据中的所有{x}替换为来自msg的各自值? 我在Perl中有一个正则表达式可以解决这个问题,但是它可以用Python吗?

data = "{1} {2}"
cmd = "!test"
msg = "!test param1 param2"

def parsecommand( data, cmd, msg, nick, channel ):
    print "Parsing command %s by %s on %s." % (cmd, nick, channel)
    msgparamcount = len(msg.split(' '))-1
    re1='.*?'
    re2='(\\{.*?\\})'
    re3='.*?'
    re4='(\\d)'
    rg = re.compile(re1+re2+re3+re4,re.IGNORECASE|re.DOTALL)
    m = rg.search(data)
    if m:
        cbraces1=m.group(1)
        d1=m.group(2)
        print "("+cbraces1+")"+"("+d1+")"+"\n"
    return

输出

({1})(2)

1 个答案:

答案 0 :(得分:1)

如果命令与您显示的一样简单,请使用format

data = "{1} {2}"
cmd = "!test"
msg = "!test param1 param2"
print(data.format(*msg.split()))

只需将参数字符串拆分为一个列表,然后随身携带format

如果cmd可能有其他参数,则创建一个新的消息字符串。从消息(msg[len(cmd):)中删除命令,并在前面添加一个虚拟命令。

cmd = "!test xyz"
msg = '_ ' + msg[len(cmd):]