首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >剪辑初学者:如何使用clipspy将Python字典数据添加到剪辑事实中

剪辑初学者:如何使用clipspy将Python字典数据添加到剪辑事实中
EN

Stack Overflow用户
提问于 2021-09-11 21:32:40
回答 1查看 87关注 0票数 0

我想用python中的字典中的clipspy来添加事实(Dict to fact)。但到目前为止,我无法做到这一点。我得到了语法错误,因为我是剪辑,规则和事实编码的初学者。如果有人能帮我解决这个问题,我要提前感谢你。以下是我的代码:

代码语言:javascript
复制
import clips
template_string = """
(deftemplate person
  (slot name (type STRING))
  (slot surname (type STRING)))
"""
Dict = {'name': 'John', 'surname': 'Doe' }

env = clips.Environment()
env.build(template_string)

template = env.find_template('person')
parstr = """(name%(name))(surname%(surname))"""%Dict
fact = template.assert_fact(parstr)
assert_fact = fact
env.run()
for fact in env.facts():
    print(fact)

这是我遇到的错误:

代码语言:javascript
复制
  Traceback (most recent call last):
  File "/home/aqsa/Clips/example2.py", line 13, in <module>
    parstr = """(name%(name))(surname%(surname))"""%Dict
ValueError: unsupported format character ')' (0x29) at index 12
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-13 08:26:07

您将一个事实断言为一个字符串,但是模板assert_fact根据documentationexamples需要一个关键字参数列表。

代码语言:javascript
复制
template.assert_fact(name='John', surname='Doe')

代码语言:javascript
复制
template.assert_fact(**Dict)  # kwargs expansion

您也可以将事实断言为字符串,但由于引擎必须解释它们,因此速度会稍慢一些。

代码语言:javascript
复制
env.assert_string('(person (name "John") (surname "Doe"))')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69146864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档