Python 尝试访问特定列表项时,列表索引超出范围
我对Python非常陌生,不明白为什么这个简单的代码不起作用: 我有一个字符串(来自websocket客户端的消息,如Python 尝试访问特定列表项时,列表索引超出范围,python,Python,我对Python非常陌生,不明白为什么这个简单的代码不起作用: 我有一个字符串(来自websocket客户端的消息,如/)作为分隔符,并希望将其拆分为一个列表: coordinates = msg.split('/') 我可以使用以下选项打印列表: print(coordinates) print(coordinates[1]) 得到这个: ['handposition', '495.0279', '443.24762', '976.6502'] 在我尝试访问列表中的第二个元素之前,一切
/
)作为分隔符,并希望将其拆分为一个列表:
coordinates = msg.split('/')
我可以使用以下选项打印列表:
print(coordinates)
print(coordinates[1])
得到这个:
['handposition', '495.0279', '443.24762', '976.6502']
在我尝试访问列表中的第二个元素之前,一切正常:
print(coordinates)
print(coordinates[1])
我收到以下错误消息:
File "mouse_server.py", line 19, in onMessage
print(coordinates[2])
exceptions.IndexError: list index out of range
打印(坐标[1])有什么问题
更新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()
最有可能的情况是,如果您在一堆行上运行它,那么可能有一个输入行没有所有预期的字段。您可以在访问该元素之前打印整个列表,并查看异常之前出现的最后一个列表。我个人会将其放入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])
更改变量…您的异常和声明的代码不匹配。异常尝试访问
坐标[2]
!还有什么不匹配?我们可以看到更多的代码吗?对不起,旧的异常消息。但这不重要,因为列表中有4项?然而,我更新了我的问题。显然msg
并不总是包含/
。当抛出该异常时,您是否100%确定正在打印正确的坐标
。。。我想我忽略了没有分隔符的初始消息…哦,该死,我想我忽略了没有分隔符的初始消息…这与发布的问题无关。你应该避免发布垃圾答案,这些答案将被删除,因为最终你将被禁止进入该网站。将标记此内容以引起版主注意。