当我的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
请建议?
答案 0 :(得分:2)
您有一个本地文件ast.py
,它正在导入,取代Python的内置ast
module。您应该删除或重命名此文件以避免名称冲突,因为这可能导致其他模块无法正常工作。
此外,您的本地模块包含以下行,导致导入异常:
operator = pp.Regex("**").setName("operator")
**
不是有效的regular expression。在正则表达式中,*
表示“前面表达式的0次或更多次重复”,这在表达式的开头没有意义,因为“没有任何重复”(如错误消息所示)。