Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 尝试访问特定列表项时,列表索引超出范围_Python - Fatal编程技术网

Python 尝试访问特定列表项时,列表索引超出范围

Python 尝试访问特定列表项时,列表索引超出范围,python,Python,我对Python非常陌生,不明白为什么这个简单的代码不起作用: 我有一个字符串(来自websocket客户端的消息,如/)作为分隔符,并希望将其拆分为一个列表: coordinates = msg.split('/') 我可以使用以下选项打印列表: print(coordinates) print(coordinates[1]) 得到这个: ['handposition', '495.0279', '443.24762', '976.6502'] 在我尝试访问列表中的第二个元素之前,一切

我对Python非常陌生,不明白为什么这个简单的代码不起作用:

我有一个字符串(来自websocket客户端的消息,如
/
)作为分隔符,并希望将其拆分为一个列表:

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%确定正在打印正确的
坐标
。。。我想我忽略了没有分隔符的初始消息…哦,该死,我想我忽略了没有分隔符的初始消息…这与发布的问题无关。你应该避免发布垃圾答案,这些答案将被删除,因为最终你将被禁止进入该网站。将标记此内容以引起版主注意。