我对Python很陌生,无法弄清楚为什么这个简单的代码无效:
我有一个字符串(来自我的websocket客户端的handposition/506.83047/388.1101/703.2166
消息),/
作为分隔符,并希望将其拆分为一个列表:
coordinates = msg.split('/')
我可以打印列表:
print(coordinates)
得到这个:
['handposition', '495.0279', '443.24762', '976.6502']
一切正常,直到我尝试使用以下命令访问列表中的第二个元素:
print(coordinates[1])
我收到此错误消息:
File "mouse_server.py", line 19, in onMessage
print(coordinates[2])
exceptions.IndexError: list index out of range
print(coordinates[1])
怎么了?
以下是完整代码:
from autobahn.twisted.websocket import WebSocketClientProtocol, \
WebSocketClientFactory
from pymouse import PyMouse
mo = PyMouse()
class MyClientProtocol(WebSocketClientProtocol):
def onConnect(self, response):
print("Server connected: {0}".format(response.peer))
def onOpen(self):
print("WebSocket connection open.")
def onMessage(self, msg, isBinary):
coordinates = msg.split('/')
print(coordinates)
print(coordinates[1])
def onClose(self, wasClean, code, reason):
print("WebSocket connection closed: {0}".format(reason))
if __name__ == '__main__':
import sys
from twisted.python import log
from twisted.internet import reactor
log.startLogging(sys.stdout)
factory = WebSocketClientFactory("ws://localhost:4343", debug = False)
factory.protocol = MyClientProtocol
reactor.connectTCP("127.0.0.1", 4343, factory)
reactor.run()
答案 0 :(得分:2)
最有可能的是,如果你在一堆行上运行它,可能有一个输入行没有所有预期的字段。您可以在访问该元素之前打印整个列表,并查看异常之前出现的最后一个。
答案 1 :(得分:-1)
我个人会把它放到一个2D数组中,这反过来会更容易打印出列表/数组的某些部分而不是全部。
Simple2D = [['A4 Notepad','1.99'],['Clear pencil case small','0.99'],['Clear pencil case large','1.50']]
打印单独会更方便,但要打印所有的 -
for i in range(len(items)):
for j in range(len(items[i])):
print(items[i][j])
更改变量......