Мне нужно прочитать другой файл CSV в прологе, некоторые строки отформатированы с 0'\t
, в другом файле отформатированы с пространством 0'
.Пролог, Чтение данных из CSV с разным разделителем
я использовал:
read_points(Filename, Points) :-
csv_read_file(Filename, P,[convert(true),functor(pt),separator(0'\t)]),
csv_read_file(Filename, P,[convert(true),functor(pt),separator(0')]).
Но dosen't работу, потому что вернуть мне два разных списка.
Как я могу его правильно скопировать? Спасибо.
EDIT: пример файла с '0\t
:
0.1 5
3 5
5 8
пример с '0
:
0.1 5
3 5
5 8
Не могли бы вы показать пример строки из каждого из ваших различных файлов CSV? – lurker
У меня есть вопрос. Первый пример выполнен с ключом TAB, второй - с пробелом. – UserFromTheSpace
Итак, что вы хотите сделать, это иметь один предикат, который будет определять, использует ли файл пробел или вкладку и соответственно возвращает список? Потому что индивидуальные 'csv_read_file' вызовы, пока вы показываете, что они работают нормально в соответствующем правильном файле. К сожалению, как только вы создаете экземпляр списка, 'P', он не может быть повторно создан. Вам нужно будет добавить логику, чтобы изучить файл для того, какой разделитель он использует, если вы пытаетесь сделать его автоматическим. – lurker