How can I load a YAML file and convert it to a Python JSON object?
My YAML file looks like this:
Section: heading: Heading 1 font: name: Times New Roman size: 22 color_theme: ACCENT_2 SubSection: heading: Heading 3 font: name: Times New Roman size: 15 color_theme: ACCENT_2 Paragraph: font: name: Times New Roman size: 11 color_theme: ACCENT_2 Table: style: MediumGrid3-Accent2
A YAML converter converts YAML configurations and documents into JSON configurations and files. It does not have any additional configuration options. Only one thing that you can alter is JSON's output. You have three choices: indent JSON using spaces or indent JSON using tabs and reduce JSON output.
Adding YAML Support to Python Meaning, Python cannot read or interpret YAML documents by default. To add YAML support to Python, you have first to install the PyYAML module. To install the PyYAML module, you'll need to run the pip command, which is the package installer for Python.
you can use PyYAML
pip install PyYAML
And in the ipython console:
In [1]: import yaml In [2]: document = """Section: ...: heading: Heading 1 ...: font: ...: name: Times New Roman ...: size: 22 ...: color_theme: ACCENT_2 ...: ...: SubSection: ...: heading: Heading 3 ...: font: ...: name: Times New Roman ...: size: 15 ...: color_theme: ACCENT_2 ...: Paragraph: ...: font: ...: name: Times New Roman ...: size: 11 ...: color_theme: ACCENT_2 ...: Table: ...: style: MediumGrid3-Accent2""" ...: In [3]: yaml.load(document) Out[3]: {'Paragraph': {'font': {'color_theme': 'ACCENT_2', 'name': 'Times New Roman', 'size': 11}}, 'Section': {'font': {'color_theme': 'ACCENT_2', 'name': 'Times New Roman', 'size': 22}, 'heading': 'Heading 1'}, 'SubSection': {'font': {'color_theme': 'ACCENT_2', 'name': 'Times New Roman', 'size': 15}, 'heading': 'Heading 3'}, 'Table': {'style': 'MediumGrid3-Accent2'}}
The PyYAML library is intended for this purpose
pip install pyyaml
import yaml import json with open("example.yaml", 'r') as yaml_in, open("example.json", "w") as json_out: yaml_object = yaml.safe_load(yaml_in) # yaml_object will be a list or a dict json.dump(yaml_object, json_out)
Notes: PyYAML only supports the pre-2009, YAML 1.1 specification.
ruamel.yaml is an option if YAML 1.2 is required.
pip install ruamel.yaml
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With