如何将命令数据中的所有{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)
答案 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):]