将列表元素写入序言中的csv
Write list element into csv in prolog
我必须用 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_write_file/3
每次都会 重新启动 写入 File
。所以最后,它会把g
、h
、i
写到文件里。
您可以将数据批量处理成 row/3
的列表,然后将它们写入文件:
<b>map_item</b>(P, row(A, B, C)) :-
P =.. [_, _, A, B, C].
insert(T, File, Data) :-
maplist(<b>map_item</b>, Data, <b>Rows</b>),
csv_write_file(File, <b>Rows</b>, [separator(0'\t)]).
我必须用 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_write_file/3
每次都会 重新启动 写入 File
。所以最后,它会把g
、h
、i
写到文件里。
您可以将数据批量处理成 row/3
的列表,然后将它们写入文件:
<b>map_item</b>(P, row(A, B, C)) :-
P =.. [_, _, A, B, C].
insert(T, File, Data) :-
maplist(<b>map_item</b>, Data, <b>Rows</b>),
csv_write_file(File, <b>Rows</b>, [separator(0'\t)]).