Prolog - 解析csv文件

时间:2014-04-20 14:38:33

标签: csv prolog swi-prolog

我尝试解析csv文件并从每行中提取特定的coloumn数据,我设法将文件解析为记录列表,但我无法迭代每个记录的字段。 他们是使用prolog解析csv文件的方法,以便csv文件的每个记录本身都是一个列表吗?

我的代码:

:- use_module(library(csv)).

% main function ,  first parse the file then extracts max total market  
get_rows_data(File,Rows) :-
   csv_read_file(File, Rows, [functor(record), arity(18)]),
   maplist(assert, Rows),
   get_row(Rows).

get_row([]).    
get_row([Head|Tail]) :-
   write('*********************************'),write(Head),
   get_row(Tail). 

1 个答案:

答案 0 :(得分:1)

我会说你几乎就在那里。您只需将记录术语转换为列表。

:- use_module(library(apply)).
:- use_module(library(csv)).

get_rows_data(File, Lists):-
  csv_read_file(File, Rows, []),
  rows_to_lists(Rows, Lists).

rows_to_lists(Rows, Lists):-
  maplist(row_to_list, Rows, Lists).

row_to_list(Row, List):-
  Row =.. [row|List].