Откройте или вставьте CSV-файл — каждая строка станет элементом списка YAML с ключами из заголовка. По умолчанию все значения остаются текстом, а значения, которые парсер YAML иначе понял бы по-своему, — NO, yes, 0150, 2024-03-01, null, — берутся в кавычки, чтобы загружаться ровно в том виде, как записаны. Файл конвертируется в вашем браузере и никогда не загружается на сервер.
Как преобразовать CSV в YAML
- Нажмите Открыть файл, перетащите на инструмент файл
.csv,.tsvили.txtили выберите Вставить. Если ключи выглядят неправильно, проверьте разделитель и кодировку в разделе Параметры импорта. - Выберите Типы значений и то, как записываются Пустые ячейки. На вкладке YAML виден ровно тот текст, который окажется в скачанном файле.
- Выберите Отступы, затем нажмите Копировать или Скачать YAML.
Результат — последовательность верхнего уровня (элементы - key: value): такую структуру используют для фикстур, начальных данных и файлов данных статических сайтов. Если нужен JSON, у CSV в JSON те же настройки типов.
Что делает каждая настройка
| Все значения как текст | Вариант по умолчанию. Каждое значение — строка YAML; кавычки добавляются только там, где простой скаляр был бы прочитан как что-то другое. |
|---|---|
| Распознавать числа и true/false | Столбец становится числами YAML, только если каждое непустое значение — простое число без ведущих нулей и не больше чем с 15 значащими цифрами; столбцы из true/false (в любом регистре) становятся логическими значениями. yes/no и даты остаются строками в кавычках. Числа записываются в каноническом виде, так что 1.50 становится 1.5. |
| Пустые ячейки | null (по умолчанию) записывает key: null; Пустая строка "" записывает key: ""; Не записывать ключ убирает этот ключ из строки. |
| Отступы | 2 пробела (по умолчанию) или 4 пробела для ключей под каждым элементом списка. |
Какие неоднозначные значения берутся в кавычки
Результат записывается так, чтобы одинаково читаться и парсерами YAML 1.2, и более старыми парсерами YAML 1.1 вроде PyYAML, которые считают логическими значениями и числами больше слов.
- Коды стран и ответов:
NO,yes,off,yиonберутся в кавычки, так что код Норвегии не загрузится какfalse. Это относится и к ключам ("on": x). - Ведущие нули:
0150и08001берутся в кавычки; без кавычек YAML 1.1 читает их как восьмеричные или десятичные числа и теряет ноль. - Даты и числа в текстовом режиме:
2019-04-01и12берутся в кавычки, чтобы не загрузиться как метка времени или целое число. - Текст, похожий на null: ячейка с
nullили~берётся в кавычки, поэтому остаётся вашим текстом и не путается с пустой ячейкой. - Переносы строк внутри значения превращаются в литеральный блок
|-, а текст с:или#внутри берётся в кавычки. Длинные строки никогда не переносятся. - Заголовки используются как ключи ровно так, как записаны, включая пробелы, кириллицу и другие нелатинские письменности. Пустой заголовок становится
Column 3, повторяющийся —name (2).
Устранение неполадок
- Числовой столбец остался в кавычках, хотя включено «Распознавать числа и true/false». Хотя бы одно значение не является простым числом, например
1,5,12 kgили007. Найдите его в просмотре CSV. - Столбец yes/no не стал логическим. Преобразуются только
trueиfalse, потому чтоyes,noиonозначают логические значения лишь в YAML 1.1. Если нужны логические значения, сначала замените их в CSV, например с помощью редактора CSV. - В ключах странные символы вроде é или ����. Файл не в UTF-8. Выберите его кодировку (например, Windows-1251) в параметрах импорта.
- Всё оказалось под одним ключом. Разделитель определён неверно; задайте его в параметрах импорта.
Ограничения и конфиденциальность
Файлы до 25 МБ, 100 000 строк или 2 млн ячеек открываются с живым предпросмотром первых 200 строк. Бо́льшие файлы конвертируются в потоковом режиме: файл читается частями дважды (сначала чтобы измерить столбцы и их типы, затем чтобы записать результат), уведомление сообщает, что скачанный файл охватывает весь файл, а кнопки Копировать нет. Один выходной файл ограничен 4 ГБ.
Конвертация идёт в фоновом обработчике в этой вкладке, поэтому страница не зависает, а кнопка Отмена её останавливает. CSV никогда не отправляется на сервер.
Пример
Список клиентов с кодами стран, почтовыми индексами с ведущими нулями, флагами yes/no, датами и пустыми ячейками, преобразованный с настройками по умолчанию (всё как текст, пустые ячейки как null). С Распознавать числа и true/false меняется только orders — на 12, 3 и 7.
country,code,postcode,vat_registered,since,orders Norway,NO,0150,yes,2019-04-01,12 Spain,ES,08001,no,2021-11-15,3 United States,US,02134,,,7
- country: Norway code: "NO" postcode: "0150" vat_registered: "yes" since: "2019-04-01" orders: "12" - country: Spain code: ES postcode: "08001" vat_registered: "no" since: "2021-11-15" orders: "3" - country: United States code: US postcode: "02134" vat_registered: null since: null orders: "7"
Вопросы и ответы
Почему `NO` в кавычках?
В YAML 1.1 NO, no, off и n без кавычек означают false. Кавычки сохраняют код страны Норвегии — или любой ответ, записанный как no, — текстом в любом парсере.
Можно ли получить один словарь с ключами по идентификатору вместо списка?
Нет. Каждая строка CSV записывается одним элементом списка, в порядке файла. Вывод со словарём по ключу здесь недоступен.
Корректен ли результат как YAML 1.2?
Да. Дополнительные кавычки, нужные для YAML 1.1, остаются корректным YAML 1.2; они лишь явно помечают как строки значения, которые и так были строками.