在调用简化时遇到错误?

时间:2016-05-12 07:32:52

标签: python python-2.7 sympy

当我的python代码尝试使用简化时,它显示以下错误。这个问题显示在我运行单独的pyparsing代码文件(哪个执行成功)之后。相同的代码之前工作正常。 修改

>>> expression="a+b+z"
>>> t=simplify(expression)
ast.py:4: SyntaxWarning: invalid pattern (**) passed to Regex
  operator = pp.Regex("**").setName("operator")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\sympy\simplify\simplify.py", line 507, in simplify
    expr = sympify(expr)
  File "C:\Python27\lib\site-packages\sympy\core\sympify.py", line 308, in sympify
    from sympy.parsing.sympy_parser import (parse_expr, TokenError,
  File "C:\Python27\lib\site-packages\sympy\parsing\sympy_parser.py", line 11, in <module>
    import ast
  File "ast.py", line 4, in <module>
    operator = pp.Regex("**").setName("operator")
  File "C:\Python27\lib\site-packages\pyparsing.py", line 1920, in __init__
    self.re = re.compile(self.pattern, self.flags)
  File "C:\Python27\Lib\re.py", line 190, in compile
    return _compile(pattern, flags)
  File "C:\Python27\Lib\re.py", line 244, in _compile
    raise error, v # invalid expression
sre_constants.error: nothing to repeat

请建议?

1 个答案:

答案 0 :(得分:2)

您有一个本地文件ast.py,它正在导入,取代Python的内置ast module。您应该删除或重命名此文件以避免名称冲突,因为这可能导致其他模块无法正常工作。

此外,您的本地模块包含以下行,导致导入异常:

operator = pp.Regex("**").setName("operator")

**不是有效的regular expression。在正则表达式中,*表示“前面表达式的0次或更多次重复”,这在表达式的开头没有意义,因为“没有任何重复”(如错误消息所示)。