String 删除序言中的单引号/引号

String 删除序言中的单引号/引号,string,prolog,swi-prolog,quotation-marks,single-quotes,String,Prolog,Swi Prolog,Quotation Marks,Single Quotes,我有一个外部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)

我有一个外部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)]

你看到的是一个原子,你想把它转换成一个术语

如果使用,则可以使用内置的:

如果
Atom
描述的术语与
term
统一,则为True。当实例化
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)].
在右边,输入原子,在左边输入“等价”项。但是请注意,例如
00
被解释为一个数字,因此等于
0
,这可能是意外行为

因此,您可以将谓词转换为:

translate(object(A,B,C,D),object(A,B,CT,D)) :-
    term_to_atom(CT,C).
由于您没有完全指定如何获取此数据,因此我不知道您将如何转换它。但上述方法可能会有所帮助