当我尝试使用Python的PySD包读取Vensim模型文件(.mdl)时,收到以下错误消息。
我的代码是:
import pysd
import os
os.chdir('path/to/model_file')
model = pysd.read_vensim('my_model.mdl')我收到的错误是:
Traceback (most recent call last):
Python Shell, prompt 13, line 1
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pysd/pysd.py", line 53, in read_vensim
py_model_file = translate_vensim(mdl_file)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pysd/vensim2py.py", line 673, in translate_vensim
entry.update(get_equation_components(entry['eqn']))
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pysd/vensim2py.py", line 251, in get_equation_components
tree = parser.parse(equation_str)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/parsimonious/grammar.py", line 123, in parse
return self.default_rule.parse(text, pos=pos)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/parsimonious/expressions.py", line 110, in parse
node = self.match(text, pos=pos)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/parsimonious/expressions.py", line 127, in match
raise error
parsimonious.exceptions.ParseError: Rule 'subscriptlist' didn't match at '' (line 1, column 21).我已经搜索了这个特定的错误,但是我找不到关于'subscriptlist‘的失败匹配规则的太多信息。
我很感谢你的见解。谢谢。
发布于 2016-10-19 02:28:45
发布于 2016-10-19 22:43:24
如果你没有使用下标,你可能在解析器中发现了一个bug。如果是这样的话,最好的方法是在github issue tracker中为该项目创建一个报告。您发布的堆栈跟踪表明错误发生在文件的第一行,并且错误与公式右侧的解析方式有关。您可以在错误报告中包含前几行,以帮助我重新创建问题。我将在我们不断增长的test suite中添加一个案例,这样我们就可以确保它不会成为未来的问题。
https://stackoverflow.com/questions/39794851
复制相似问题