繁体   English   中英

Python元组访问问题?

[英]Python tuple access issue?

我正在使用python pyparsing libary,其输出似乎是元组。 但是,当尝试作为元组访问时,我得到了意想不到的结果。

>>> from pyparsing import *
>>> aaa = (Literal('xxx') + SkipTo(':')  + Literal(':')('::') + Word(nums)('eee')).parseString('xxx : 123')

>>> aaa
(['xxx', '', ':', '123'], {'eee': [('123', 3)], '::': [(':', 2)]})

这有点奇怪:

>>> aaa[0]
'xxx'
>>> aaa[1]
''

我希望aaa[0]成为列表:

['xxx', '', ':', '123']

和aaa [1] - 字典:

{'eee': [('123', 3)], '::': [(':', 2)]}

我为什么会出乎意料? 这里发生了什么? 谢谢。

Python有一些很好的内省能力。 确定什么是问题

>>>type(aaa)
   <class 'pyparsing.ParseResults'>

你能用它做什么,方法和属性

>>>dir(aaa)
   ['::', '__class__', '__delattr__', '__doc__', '__format__', '__get__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__self_class__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__thisclass__', 'eee']

我看到它有一个get方法

for each in aaa:
    type(each), each, len(each)

<type 'str'>

for each in aaa:
     type(each), each, len(each)



(<type 'str'>, 'xxx', 3)
(<type 'str'>, '', 0)
(<type 'str'>, ':', 1)
(<type 'str'>, '123', 3)

现在是时候阅读文档了

我会注意到你使用pyparsing方法创建了xxx和其他东西,所以你可以问它们是什么类型(Literal)并了解它们的内部魔法目录(Literal)有时答案不是那么有用,但通常你会通过询问不破坏任何东西。

最重要的是,aaa似乎不是一个元组,我注意到它有一些与元组方法相同的方法,但它没有元组所有的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM