Як використовувати csv файл

Як використовувати CSV файл

Формат визначений як текстовий, порядковий, зі збереженням запису на рядок. Роздільник рядків - стандартний роздільник розриву рядків.

Однією записи даних відповідає один рядок, значення окремих колонок відокремлюються одна від одної комою або крапкою з комою. Далі в статті використовується роздільник кома. Значення колонок, що містять зарезервовані символи (кома) обрамляются подвійними лапками ( "); якщо в значенні зустрічаються лапки - вони представляються в файлі у вигляді двох лапок поспіль.

Для імпорту такого формату на мові MUMPS є два варіанти - використання стандартного підмножини мови для парсинга рядки і використання розширених функцій, що спрощують розбір рядка заданої за певним правилом. Найбільш простим варіантом у багатьох системах програмування підтримують регулярні вирази є використання регекспов.

Для демонстрації можливостей імпорту використовуємо тестову програму, яка виконує читання файлу і для кожного рядка викликає обробку рядка. В обробці рядка викликається парсинг рядка на окремі значення і їх показ на екрані.

Прогресивне читання текстового файлу з передачею кожного рядка підпрограми:

Показ рядки до розбору і показ окремих значень після парсинга:

Парсинг окремого рядка з поверненням набору колонок у вигляді списку:

Тут використовується три регулярних вирази - resplit для розбиття на окремі значення, reremove для видалення форматуючих послідовностей і заміна подвоєних лапок на одинарні.

При імпорті CSV файлу з прикладу утиліта виводить на екран діагностику з розбором рядків і значень:

Утиліта справляється з досить складним форматуванням даних, розпізнаючи випадки зайвих прогалин і лапок.

Для експорту в прикладі використовується особливість системної функції $ ZQUOTE () подвоювати лапки якщо вони є в рядку і додавати обрамляють лапки для значення не є числом. Числа використовуються як є, без декорування, для чисел з дробовою частиною використовується роздільник точка.

Формально кажучи, стандарт CSV розрізняє роздільник форматування в залежності від локалі системи - в локалях, де десятковим роздільником є ​​точка, в якості табличного роздільник використовується кома; в локалях, де десятковим роздільником є ​​кома, як табличного роздільник крапку з комою. У прикладі виводяться числа з десятковим роздільником точка, не використовуючи локаль системи. Тому як роздільник використовується кома, це найбільш поширений випадок.

Для експорту даних рутина прикладу містить функцію їх створення:

І сам експорт складається з функції порядкового виводу і функції виведення одного рядка:

Наведений приклад є лише демонстраційним і показує можливості системи MiniM по роботі з поширеними форматами файлів даних. У прикладі використовується спрощене уявлення рядки даних у вигляді списку. У реальній системі працює в експлуатації уявлення даних може відрізнятися.

Схожі статті