Я пытаюсь прочитать CSV-файл в базе знаний Prolog. Ниже приведен код:
:- use_module(library(csv)).
:- my_csv_read('../UserWeightings/userWeighting_dummy_25Oct2018.csv').
my_csv_read(F):-
csv_read_file(F,Data,[functor(weighting),strip(true)]),
maplist(assertz,Data).
В моем CSV-файле всего два столбца. Столбец 1 - это идентификаторы URI, а столбец 2 - числа (представляют собой весовые коэффициенты для этого URI). Файл выглядит так:
'http://test/weightings#Red', 0.5
'http://test/weightings#Yellow', 0.3
'http://test/weightings#Green', 0.8
'http://test/weightings#Black', 1.2
'http://test/weightings#White', 2
Когда я запускаю код, он дает следующую ошибку:
ERROR: m:/{file path and line number}
Domain error: `row_arity(2)' expected, found `1'
Warning: m:/{path and line number}
Goal (directive) failed: user:my_csv_read('../UserWeightings/userWeighting_dummy_25Oct2018.csv')
Кто-нибудь знает, почему он читает только один столбец? Большое спасибо!
Разобрался. Проблема заключалась в том, что CSV-файл содержал две лишние пустые строки. Как глупо. Поэтому важно убедиться, что исходные файлы полностью верны.
В моем случае мой первый столбец был пуст