YAML – это один из самых популярных форматов …
Ну, на самом деле, они не знают формат того, что …
Первоначально это был « Еще одна разметка языка Markup », Позже это стало« Ямл Не накладывайте язык »:
Первоначально ЯМЛ сказал, что это значит Еще одна разметка языка Markup , [12] ссылается на его цель как Язык разметки с Еще один построить, но тогда было повторено как Ямл Не накладывайте язык , а Рекурсивное аббревиатуру , чтобы отличить свою цель как ориентированную на данные, а не на разметку документов.
В российской Википедии «дружеское» слово даже принимается в цитатах – и я абсолютно согласен с этим.
На самом деле – YAML – это еще один тип серии данных, преемник формата JSON, но с некоторыми дополнительными способностями.
В недавнем опросе в Украинские дежопты сообщества ” yaml vs json” – Ямл занял около 90% голосов.
Что касается меня, JSON еще самый удобный, но ямл используется во многих местах, поэтому нужно его использовать.
В этом посте будет ближе взглянуть на типы данных YAML и быстрое сравнение с JSON.
Ямл Основные принципы
- Всегда используйте UTF-8, чтобы избежать возможных проблем
- Никогда не используйте вкладку для отступа
Валидация синтаксиса YAML
Чтобы проверить синтаксис YAML в Linux yamllint
может быть использован.
Установите это:
$ sudo pacman -S yamllint
А также Проверьте файл:
$ yamllint monitoring.yml monitoring.yml 1:1 warning missing document start "---" (document-start) 20:34 error trailing spaces (trailing-spaces) 22:32 error trailing spaces (trailing-spaces) 23:37 error trailing spaces (trailing-spaces) 33:7 error wrong indentation: expected 8 but found 6 (indentation) 35:9 error wrong indentation: expected 10 but found 8 (indentation) 36:11 error wrong indentation: expected 12 but found 10 (indentation)
Хотя этот файл, используемый Anibile без каких-либо проблем – в его форматировании все еще есть некоторые проблемы.
Валидация JSON
А например – Джосовые документы Валидация от консоли Linux с помощью Python’s JSON
Модуль:
$ python -m json.tool < json-example.json { "key1": "value1", }
Vim Plugin
Есть также Vim-Yaml
плагин для погибший
.
Добавить в свой .vimrc.
:
... " https://vimawesome.com/plugin/vim-yaml-all-too-well Plug 'avakhov/vim-yaml' " add yaml stuffs au! BufNewFile,BufReadPost *.{yaml,yml} set filetype=yaml foldmethod=indent autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab ...
Перезагрузить конфигурацию и установить его:
:source % :PlugInstall
Pyyaml.
Работать с YAML из Python есть Pyyaml библиотека.
Некоторые примеры ниже.
Форматирование YAML
Комментарии в Ямл
Одним из немногих преимуществ YAM является возможность добавления комментариев в его файлах.
Форматирование комментариев обычно – используя #.
Комментарий может быть добавлен в любом месте.
Примеры:
--- # I'm comment - name: somestring value1: "# I'm not a comment!" value: anotherstring # another comment
Отступы
Главная головная боль на ямле – это углубления.
В этом, в целом файле, количество пробелов (пробелов – никогда не вкладывается!) Должно быть одинаковым.
Я Если в одном месте используются два пространства – тогда весь файл должен использовать два пробела.
Еще больше – соглашение состоит в том, чтобы использовать два пространства, хотя могут быть любой – просто должен быть одинаковым везде.
Например:
--- parent_key: key1: "value1" key2: "value2" key3: "%value3"
Будет действительная форма, но следующий пример:
--- parent_key1: key1: "value1" key2: "value2" key3: "%value3" parent_key2: key1: "value1" key2: "value2" key3: "%value3"
Не будет.
В то время как в Python, который носит, вырабатывается из-за зависимости от пространств, которые можно использовать такое форматирование, хотя будет нарушение стандарта:
#!/usr/bin/env python def a(): print("A") def b(): print("B") a() b()
Результаты:
$ python spaces.py A B
Однострочный ямл
Помимо стандартного представления и помещения вдавливания – вы можете использовать JSON-подобное форматирование, как:
--- parent_key: {key1: "value1", key2: "value2"}
Буквальный скалярный скаляр
YAML поддерживает возможность добавления многоуровневых буквальных скаляров и имеет три типа: общий, используя « |
» и « >
».
Общий формат выглядит как:
--- string: This is some text without newlines
Результат в Python Console:
>>> yaml.load(open('yaml-example.yml')) {'string': 'This is some text without newlines'}
Используя |. ( буквальный стиль) – Сохранит все новинки и закрывающиеся пространства:
--- string: | This is some text with newlines
Результат:
>>> yaml.load(open('yaml-example.yml')) {'string': 'This\nis\nsome text\nwith newlines\n'}
И используя> ( сложенный стиль ):
--- string: > This is some text without newlines
Вернет весь текст в одной строке + закрытие символа новой строки:
>>> yaml.load(open('yaml-example.yml')) {'string': 'This is some text without newlines\n'}
Но все же вы должны придерживаться того же форматирования пространств.
Кроме того, проверьте отличный ответ на Stackoverflow Здесь >>> :
Есть 5 6 девять (или 63 *, в зависимости от того, как вы рассчитываете) разные способы записи многострочных строк в YAML.
YAML Основные форматы данных
ЯМЛ использует три основных формата данных::
- скаляры: самый простой в Ключ: значение Посмотреть
- Список/последовательность: данные, заказанные индексами
- Словарь/отображение: аналогично скалярам, но может содержать вложенные данные, включая другие типы данных
Скаляры
Базовый тип данных – скаляры, просто ключ: значение в качестве переменных программирования:
--- key1: "value1" key2: "value2"
Используя цитаты для значений, рекомендуемые для избежания возможных проблем со специальными символами:
cat example.yml --- key1: "value1" key2: "value2" key3: %value3
Проверьте:
$ yamllint example.yml example.yml 4:7 error syntax error: found character '%' that cannot start any token
Тем не менее, вы можете пропустить цитаты для логических истинных/ложных значений и для целочисленных типов.
Скаляры – ямл против json
Например – скалярный в Ямле:
--- key: "value"
И json:
{ "key": "value" }
Питон
ЯМЛ-скаляры в примере Python:
>>> import yaml >>> yaml.load(""" ... key: "value" ... """) {'key': 'value'}
Или из файла:
>>> import yaml >>> yaml.load(open('yaml-example.yml')) {'key': 'value'}
Списки в Ямле
Списки, последовательности, коллекции – представляет собой коллекцию упорядоченных данных, где каждый элемент может быть доступен по его индексу.
Например:
# SIMPLE LIST - element1 - element2
Вложенные списки в Ямле
Аналогично в приведенные выше – списки могут включать вложенный список:
# SIMPLE LIST - element1 - element2 # nested list - - element1
Или может быть названный список:
--- itemname: - valuename
При этом списки могут также содержать скабать или словари:
--- itemname: - valuename - scalar: "value" - dict: {item1: "value1", item2: "value2"}
Списки – YAML VS JSON
Список в Ямле:
--- - item1 - item2 - item3
Список в JSON:
[ "item1", "item2", "item3" ]
Вложенный список в Ямле:
--- - item1 - item2 - item3 - - nested1
Вложенный список в JSON:
[ "item1", "item2", "item3", [ "nested1" ] ]
Python и YAML-списки
Вот все похожие на пример скаляра:
>>> yaml.load(open('yaml-example.yml')) ['item1', 'item2', 'item3', ['nested1']] >>> for i in yaml.load(open('yaml-example.yml')): ... print(i) ... item1 item2 item3 ['nested1']
Словари
Словари, также называемые сопоставлениями, похожи на тип скаляров и содержит ключ: данные о значениях, но в отличие от скаляров, которые являются основным типом – словарь могут включать в себя вложенные элементы, например, список:
--- key1: "value1" key2: - value2 - value3
Или другой вложенный словарь:
--- key1: "value1" key2: - value2 - value3 key3: key4: "value4" key5: "value5" key6: key7: "value7"
Словарь – JSON VS YAML
Словарь в Ямле:
--- key1: "value1" key2: - value2 - value3
Словарь в JSON:
{ "key1": "value1", "key2": [ "value2", "value3" ] }
Питон
>>> yaml.load(open('yaml-example.yml')) {'key1': 'value1', 'key2': ['value2', 'value3']} >>> type(yaml.load(open('yaml-example.yml')))
И все обычные для операций словари Python поддерживаются:
>>> dict = yaml.load(open('yaml-example.yml')) >>> type(dict)>>> dict.update({'key3':'value3'}) >>> print(dict) {'key1': 'value1', 'key2': ['value2', 'value3'], 'key3': 'value3'}
В общем – это все.
Проверьте также эти страницы для более подробной информации:
Похожие посты.
- 05/13/2015 Django: Создание проекта “Домашняя бухгалтерия” (0)
- 02/05/2015 Django Book: URLCONF и “Слабые Связи” (0)
- 05/31/2015 Python: Интеграция Пилинт и пичарм (0)
Оригинал: “https://dev.to/setevoy/what-is-yaml–its-overview-basic-data-types-yaml-vs-json-and-pyyaml-4n1p”