我正在编写一个 IRC 机器人,并且正在使用一大堆拆分来解析消息。IRC“消息”的格式是:
:username!765a4aa2@gateway/web/freenode/ip.***.***.***.*** PRIVMSG #Channel :Message body
特别是得到消息文本的那个:
message = data.split(':')[2]
这是最后一个 ':' 之后的所有内容,但是当用户通过 IRC 发送链接时,消息将如下所示:
:username!765a4aa2@gateway/web/freenode/ip.***.***.***.*** PRIVMSG #Channel :http://web address.com/
并且代码只会获取消息的“http”部分,因为其余部分现在位于拆分的第三部分。
那么如何解析包含链接的消息呢?
一种方法是获取第一部分的长度,然后将其删除:
message = data[len(data.split(':')[1])+1:]
但我不禁觉得一定有更好的方法。有吗?