12.8. Przetwarzanie plików tekstowych nie w pełni zgodnych z formatem CSV

Problem

Chcemy przeanalizować łańcuch lub plik w formacie zbliżonym do CSV, gdzie w roli separatorów zastosowano inne łańcuchy niż przecinki czy znaki przejścia do nowego wiersza.

Rozwiązanie

W wywołaniu metody CSV::Reader można określić łańcuchy spełniające rolę separatora wierszy (rozdzielającego poszczególne obiekty Row) oraz separatora pól (rozdzielającego poszczególne obiekty Column). To samo można osiągnąć za pomocą specjalnych argumentów przekazywanych do metody FasterCSV.parse. Dzięki tym mechanizmom można przetwarzać większość formatów zbliżonych do CSV:

require 'csv' pipe_separated="1|2ENDa|bEND" CSV::Reader.parse(pipe_separated, '|', 'END') { |r| r.each ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.