我正在编写一个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:]
但我不禁觉得必须有更好的方法。有吗?
答案 0 :(得分:3)
str.split()
接受可选参数maxsplit
。
message = data.split(':', 2)
答案 1 :(得分:1)
设置您要分割的:
的数量:
data.split(':', 2)
你将拥有:
['',
'username!765a4aa2@gateway/web/freenode/ip.***.***.***.*** PRIVMSG #Channel ',
'http://web address.com/']