【问题标题】:Write list element into csv in prolog在prolog中将列表元素写入csv
【发布时间】:2020-11-14 17:33:30
【问题描述】:

我必须使用 csv_write_file 写入 csv 文件。
我的实际代码是:

insert(T, File, Data) :-
    Data = [X | Xs],
    X =.. [_, _, A, B, C],
    csv_write_file(File, [row(A, B, C)], [separator(0'\t)]),
    insert(T, File, Xs).

数据是这样的列表:

[test(name, a, b, c), test(name, d, e, f), test(name, g, h, i)].

最后,文件只包含列表的最后一个元素 --> g h i

但我想要这样的文件:

a b c
d e f
g h i

我的实现有什么问题?谢谢。

【问题讨论】:

    标签: csv prolog swi-prolog


    【解决方案1】:

    发生这种情况的原因是因为csv_write_file/3 每次都会重新启动 写入File。所以最后,它将把g、h、i 写入文件。

    您可以将数据批量处理到row/3s 的列表中,然后将它们写入文件:

    map_item(P, row(A, B, C)) :-
        P =.. [_, _, A, B, C].
    
    insert(T, File, Data) :-
        maplist(map_item, Data, Rows),
        csv_write_file(File, Rows, [separator(0'\t)]).

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 2021-05-29
      • 2011-08-17
      • 1970-01-01
      相关资源
      最近更新 更多