从swi prolog代码将数据写入CSV文件

从swi prolog代码将数据写入CSV文件,csv,prolog,swi-prolog,Csv,Prolog,Swi Prolog,如何从下面的prolog代码将数据写入CSV文件 谢谢 某人 简单解 由于您使用的是SWI Prolog,因此可以使用 如您所见,我分两步进行: 我创建了表格rowA,B的术语。 然后我将这些术语交给csv_write_file/2,它负责创建语法正确的输出文件。 非标准分离器 在你的问题中,你不是在a和B之间写逗号,而是一个空格。如果确实要将空间用作分隔符,可以将其设置为选项: csv_write_file('output.csv', Rows, [option(separator(0' )]

如何从下面的prolog代码将数据写入CSV文件

谢谢

某人

简单解 由于您使用的是SWI Prolog,因此可以使用

如您所见,我分两步进行:

我创建了表格rowA,B的术语。 然后我将这些术语交给csv_write_file/2,它负责创建语法正确的输出文件。 非标准分离器 在你的问题中,你不是在a和B之间写逗号,而是一个空格。如果确实要将空间用作分隔符,可以将其设置为选项:

csv_write_file('output.csv', Rows, [option(separator(0' )])
“不平衡”论点 另外,在您的问题中,B的值比A的值多。您可以编写处理此问题的代码,但有几种方法可以处理此问题。例如,1您可以用nill填充缺失的单元格;2如果相同长度的Bs失败,您可以抛出异常;3您只能写入“完整”行:

length(As0, N1),
length(Bs0, N2),
N is max(N1, N2),
length(As, N),
append(As, _, As0),
length(Bs, N),
append(Bs, _, Bs0),

@EugeneSh可能重复。我不确定那是否是完整的副本。这个问题询问另一个问题中没有提到的特定格式,即CSV。@WouterBeek,添加coma而不是空格,并更改文件扩展名?它有这么大的区别吗?@EugeneSh.:CSV这是一种标准格式,很容易做对
csv_write_file('output.csv', Rows, [option(separator(0' )])
length(As0, N1),
length(Bs0, N2),
N is max(N1, N2),
length(As, N),
append(As, _, As0),
length(Bs, N),
append(Bs, _, Bs0),