2

我正在编写一个 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:]

但我不禁觉得一定有更好的方法。有吗?

4

2 回答 2

3

str.split()接受一个可选参数maxsplit

message = data.split(':', 2)
于 2012-11-15T23:55:26.230 回答
1

设置:您要拆分的数量:

data.split(':', 2)

你将拥有:

['',
'username!765a4aa2@gateway/web/freenode/ip.***.***.***.*** PRIVMSG #Channel ',
'http://web address.com/']
于 2012-11-15T23:55:19.757 回答