小编Tim*_*ima的帖子

pyparsing:命名结果?

我正在编写一个解析器来解析数学表达式,其中包含变量。我想要所有捕获到的变量的列表。但是我只得到最后捕获的变量。下面是显示问题的最小示例。

    >>> from pyparsing import *
    >>> var = Word(alphas)
    >>> expr = Forward()
    >>> expr << var('var') + ZeroOrMore(Literal('+') + expr)
    >>> foo = expr.parseString("x + y + z")
    >>> foo
    (['x', '+', 'y', '+', 'z'], {'var': [('x', 0), ('y', 2), ('z', 4)]})
    >>> foo['var']
    'z'
Run Code Online (Sandbox Code Playgroud)

我期待着['x','y','z']。我正在使用pyparsing 2.1版。

python parsing pyparsing

5
推荐指数
1
解决办法
256
查看次数

在Python中的__getitem__方法中使用关键字参数

我想定义一个类Foo,其对象可以像,foo[1, a=2].

我试图通过装饰__getitem__Foo 的方法来实现这一点,但没有成功.下面是示例代码.

def decorator(func):
    def func_(*args, **kewargs):
        if 'a' in kewargs:
            args = list(args) + [kewargs['a']]
            return func(*args)
        else:
            return func(*args)
    return func_

class Foo(object):
    @decorator
    def __getitem__(self, *items):
        return items
foo = Foo()

>>> foo.__getitem__(2, a=10)
(2, 10)
>>> foo[2, a=10]
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

所以foo[...]不等同于foo.__getitem__(...),前者背后的东西是为前者完成的.我的问题是foo[2, a=10],如果有的话,我究竟能做什么以及如何工作.

python metaprogramming

3
推荐指数
1
解决办法
572
查看次数

标签 统计

python ×2

metaprogramming ×1

parsing ×1

pyparsing ×1