【发布时间】:2015-12-12 00:41:00
【问题描述】:
我正在使用 python pyparsing 库,其输出似乎是元组。但是,当尝试作为元组访问时,我得到了意想不到的结果。
>>> 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)]}
为什么我得到了意想不到的结果?这里发生了什么?谢谢。
【问题讨论】:
-
你输入 aaa 了吗?类型(aaa)
-
>>> type(aaa)
>>> dir(aaa) ['::', 'class', 'delattr', 'doc', 'format', 'get', 'getattribute ', 'hash', 'init', 'new', 'reduce', ' reduce_ex'、'repr'、'self'、'self_class'、'setattr' , 'sizeof', 'str', 'subclasshook', 'thisclass', 'eee'] > >> -
查看类似问题的答案:stackoverflow.com/questions/7045757/… ParseResults 对象可以被视为列表、字典或对象。或者您可以使用
asList()或asDict()转换它们。但首先尝试这些访问:aaa[0]、aaa['eee']和aaa.eee。我有点困惑,您在一些未出现在列表中的命名结果中有值,以及为什么有一个名为“::”的命名元素。但这些与这个问题无关。如果你打印出aaa.dump(),你会看到更好的细节。
标签: python list dictionary tuples pyparsing