Python和解析IRC消息

6 python irc parsing

根据RFC,使用Python解析从IRC服务器接收的消息的最佳方法是什么?我只想要某种列表/其他,例如:

:test!~test@test.com PRIVMSG #channel :Hi!
Run Code Online (Sandbox Code Playgroud)

成为这个:

{ "sender" : "test!~test@test.com", "target" : "#channel", "message" : "Hi!" }
Run Code Online (Sandbox Code Playgroud)

等等?

(编辑:我想解析一般的 IRC消息,而不仅仅是PRIVMSG)

Unk*_*own 16

看看Twisted的实现http://twistedmatrix.com/

不幸的是,我没时间,也许其他人可以在这里粘贴它.

编辑

好吧,我回来了,奇怪的是没有人粘贴它,所以这里是:

http://twistedmatrix.com/trac/browser/trunk/twisted/words/protocols/irc.py#54

def parsemsg(s):
    """Breaks a message from an IRC server into its prefix, command, and arguments.
    """
    prefix = ''
    trailing = []
    if not s:
       raise IRCBadMessage("Empty line.")
    if s[0] == ':':
        prefix, s = s[1:].split(' ', 1)
    if s.find(' :') != -1:
        s, trailing = s.split(' :', 1)
        args = s.split()
        args.append(trailing)
    else:
        args = s.split()
    command = args.pop(0)
    return prefix, command, args

parsemsg(":test!~test@test.com PRIVMSG #channel :Hi!")
# ('test!~test@test.com', 'PRIVMSG', ['#channel', 'Hi!']) 
Run Code Online (Sandbox Code Playgroud)

该函数紧跟IRC RFC中描述的EBNF.