Python的IRC客户端
问题描述:
当我运行该脚本:Python的IRC客户端
import socket
from time import strftime
time = strftime("%H:%M:%S")
irc = 'irc.tormented-box.net'
port = 6667
channel = '#tormented'
sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sck.connect((irc, port))
print sck.recv(4096)
sck.send('NICK supaBOT\r\n')
sck.send('USER supaBOT supaBOT supaBOT :supaBOT Script\r\n')
sck.send('JOIN ' + channel + '\r\n')
sck.send('PRIVMSG #tormented :supaBOT\r\n')
while True:
data = sck.recv(4096)
if data.find('PING') != -1:
sck.send('PONG ' + data.split() [1] + '\r\n')
elif data.find ('PRIVMSG') != -1:
nick = data.split ('!') [ 0 ].replace (':', '')
message = ':'.join (data.split (':') [ 2: ])
destination = ''.join (data.split (':') [ :2 ]).split (' ') [ -2 ]
if destination == 'supaBOT':
destination = 'PRIVATE'
print '(', destination, ')', nick + ':', message
get = message.split(' ') [1]
if get == 'hi':
try:
args = message.split(' ') [2:]
sck.send('PRIVMSG ' + destination + ' :' + nick + ': ' + 'hello' + '\r\n')
except:
pass
我得到这样的错误:
get = message.split(' ')[1]
IndexError: list index out of range
我怎样才能解决呢?
答
这意味着message
里没有空格,所以当它被一个空格分开时,会得到一个包含单个元素的列表 - 您试图访问此列表的第二个元素。你应该为这种情况插入一张支票。
编辑:回复您的评论:您如何添加支票取决于您的程序的逻辑。最简单的办法是这样的:
if ' ' in msg:
get = message.split(' ')[1]
else:
get = message
+0
如何插入支票? – sourD 2010-02-06 10:08:45
答
尝试
get = message.split(" ",1)[-1]
例
>>> "abcd".split(" ",1)[-1]
'abcd'
>>> "abcd efgh".split(" ",1)[-1]
'efgh'
这AARGH错字让我想起:http://pythong.org/(警告:你可以不看这个)。 – 2010-02-06 10:12:06