删除 Prolog 中的单引号/引号

Posted

技术标签:

【中文标题】删除 Prolog 中的单引号/引号【英文标题】:Remove single quotes/quotation marks in Prolog 【发布时间】:2016-01-13 15:35:07 【问题描述】:

我有一个外部 API 向我的 Prolog 应用程序发送信息,但我发现创建事实时出现问题。

当收到的信息很广泛时,Prolog 会自动将'(单引号)添加到该信息中。

示例:收到数据后,我创建的事实是:

object(ObjectID,ObjectName,'[(1,09:00,12:00),(2,10:00,12:00)]',anotherID)

我想创造的事实是

object(ObjectID,ObjectName,[(1,09:00,12:00),(2,10:00,12:00)] ,anotherID)

列表前没有'

有谁知道如何解决这个问题?使用接收'[(1,09:00,12:00),(2,10:00,12:00)]' 并返回[(1,09:00,12:00),(2,10:00,12:00)] 的谓词?

【问题讨论】:

【参考方案1】:

你看到的是一个atom,你想把它转换成一个term我想。

如果你使用swi-prolog,你可以使用内置的term_to_atom/2

如果Atom 描述了一个与Term 统一的术语,则为真。当Atom被实例化时,Atom被解析,结果与Term统一。

示例:

?- term_to_atom(X,'[(1,09:00,12:00),(2,10:00,12:00)]').
X = [ (1, 9:0, 12:0), (2, 10:0, 12:0)].

所以在右侧,您输入 atom,在左侧输入“equivalent”术语。但请注意,例如 00 被解释为一个数字,因此等于 0,这可能是意外行为。

因此,您可以将谓词翻译为:

translate(object(A,B,C,D),object(A,B,CT,D)) :-
    term_to_atom(CT,C).

由于您没有完全指定如何获取此数据,我不知道您将如何转换它。不过上面的方法可能会有一些帮助。

【讨论】:

以上是关于删除 Prolog 中的单引号/引号的主要内容,如果未能解决你的问题,请参考以下文章

单引号内的单引号删除正斜杠

如何从R数据框中的列名中删除不必要的单引号(')?

JS中的单引号和双引号

JS中的单引号和双引号

SQL语言中的单引号与双引号区别

js中的单引号与双引号[重复]