gpt4 book ai didi

csv - 导入 csv 文件数据以填充 Prolog 知识库

转载 作者:行者123 更新时间:2023-12-01 01:00:17 29 4
gpt4 key购买 nike

我有一个 csv 文件 example.csv其中包含带有标题 var1 和 var2 的两列。

enter image description here

我想填充一个最初为空的 Prolog 知识库文件 import.pl与重复的事实,而每一行 example.csv被同样对待:

fact(A1, A2).
fact(B1, B2).
fact(C1, C2).

我如何在 SWI-Prolog 中编码?

编辑,基于@Shevliaskovic 的回答 :
:- use_module(library(csv)).
import:-
csv_read_file('example.csv', Data, [functor(fact), separator(0';)]),
maplist(assert, Data).

import.在控制台中运行,我们完全按照请求的方式更新知识库(除了知识库直接在内存中更新,而不是通过文件和后续咨询来更新)。

查询 setof([X, Y], fact(X,Y), Z). :
Z = [['A1', 'A2'], ['B1', 'B2'], ['C1', 'C2'], [var1, var2]].

最佳答案

SWI Prolog 有一个内置的过程。

这是

csv_read_file(+File, -Rows) 

或者您可以添加一些选项:
csv_read_file(+File, -Rows, +Options) 

你可以在 documentation 看到它.想要查询更多的信息

这是文档中的示例:

Suppose we want to create a predicate table/6 from a CSV file that we know contains 6 fields per record. This can be done using the code below. Without the option arity(6), this would generate a predicate table/N, where N is the number of fields per record in the data.


?- csv_read_file(File, Rows, [functor(table), arity(6)]),
maplist(assert, Rows).

例如:

如果您的 File.csv 如下所示:
A1  A2
B1 B2
C1 C2

您可以将其导入 SWI,例如:
9 ?- csv_read_file('File.csv', Data).

结果将是:
Data = [row('A1', 'A2'), row('B1', 'B2'), row('C1', 'C2')].

关于csv - 导入 csv 文件数据以填充 Prolog 知识库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24095068/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com