Python: 从 swiplserver 转换字典
Python: convert dictionary from swiplserver
我正在使用 swiplserver 在 python 中使用 prolog 查询。在该查询中,我得到了这种字典:
to_translate = {'A': 'p', 'B': '_', 'C': 'q', 'Z': {'→E': {'args': [['p', {'args': ['p', 'q'], 'functor': '→'}], 'q'], 'functor': '⊦'}}}
在 prolog 文件中,我刚刚定义了一些 xfy operators(例如 ⊦ 和 →)。我现在的目标是按以下方式翻译字典(与 prolog 的自然输出相同):
result = {'A': 'p', 'B': '_', 'C': 'q', 'Z': {'→E': '[p, (p → q)] ⊦ q'}}
如果 ⊦ 不在我的运算符列表中,结果将是:
result = {'A': 'p', 'B': '_', 'C': 'q', 'Z': {'→E': '⊦([p, (p → q)], q)'}}
我听说 swiplserver 使用 JSON 来生成字典本身。也许这是关键,而且我认为问题更容易解决。
希望你能给我一些快速提示或解决方案。
我想你问的是如何将 swiplserver 返回的 JSON 格式转换为 Prolog 字符串?
有一个 swiplserver
函数 json_to_prolog
可以执行此操作,但它目前仅生成 +(b, c)
之类的术语,而不是 b + c
这与您不完全相同正在寻找,但可能会有帮助?
from swiplserver import *
print(json_to_prolog({'args': [['p', {'args': ['p', 'q'], 'functor': '→'}], 'q'], 'functor': '⊦'}))
运行 给出:
'⊦'([p, '→'(p, q)], q)
我正在使用 swiplserver 在 python 中使用 prolog 查询。在该查询中,我得到了这种字典:
to_translate = {'A': 'p', 'B': '_', 'C': 'q', 'Z': {'→E': {'args': [['p', {'args': ['p', 'q'], 'functor': '→'}], 'q'], 'functor': '⊦'}}}
在 prolog 文件中,我刚刚定义了一些 xfy operators(例如 ⊦ 和 →)。我现在的目标是按以下方式翻译字典(与 prolog 的自然输出相同):
result = {'A': 'p', 'B': '_', 'C': 'q', 'Z': {'→E': '[p, (p → q)] ⊦ q'}}
如果 ⊦ 不在我的运算符列表中,结果将是:
result = {'A': 'p', 'B': '_', 'C': 'q', 'Z': {'→E': '⊦([p, (p → q)], q)'}}
我听说 swiplserver 使用 JSON 来生成字典本身。也许这是关键,而且我认为问题更容易解决。
希望你能给我一些快速提示或解决方案。
我想你问的是如何将 swiplserver 返回的 JSON 格式转换为 Prolog 字符串?
有一个 swiplserver
函数 json_to_prolog
可以执行此操作,但它目前仅生成 +(b, c)
之类的术语,而不是 b + c
这与您不完全相同正在寻找,但可能会有帮助?
from swiplserver import *
print(json_to_prolog({'args': [['p', {'args': ['p', 'q'], 'functor': '→'}], 'q'], 'functor': '⊦'}))
运行 给出:
'⊦'([p, '→'(p, q)], q)