33
Frontmatter Parsing With Python
I write content for AWS, Kubernetes, Python, JavaScript and more. To view all the latest content, be sure to visit my blog and subscribe to my newsletter. Follow me on Twitter.
This is Day 4 of the #100DaysOfPython challenge.
This post will use the python-frontmatter library to parse an example markdown file with frontmatter to demonstrate how to parse metadata from your markdown files.
This can be a useful tool to colocate important information within your markdown that can be access when programmatically reading files!
Let's create the
hello-frontmatter
directory and install python-frontmatter
. We will also need to add an example markdown file.# Make the `hello-frontmatter` directory
$ mkdir hello-frontmatter
$ cd hello-frontmatter
# Create an example MDX file
$ touch frontmatter-example.mdx
# Init the virtual environment
$ pipenv --three
$ pipenv install python-frontmatter
$ pipenv install --dev jupyterlab
Inside of
frontmatter-example.mdx
add the following:---
title: "Henlo, FrontMatter"
date: "2016-12-16"
---
Henlo world, this is me.
At this stage, we are ready to parse the file and get the metadata.
Start up the notebook server:
# Startup the notebook server
$ pipenv run jupyter-lab
# ... Server is now running on http://localhost:8888/lab
The server will now be up and running.
Once on http://localhost:8888/lab, select to create a new Python 3 notebook from the launcher.
Ensure that this notebook is saved in
hello-frontmatter/docs/<your-file-name>
.We will create three cells to handle each part of this project:
python-frontmatter
library and related modules for the os.path
library to help determine the relative path.os.path
imports to get the relative path to the file.import frontmatter
from os.path import join, dirname, abspath
mdx_filepath = join(dirname(abspath("__file__")), '../frontmatter-example.mdx')
print(mdx_filepath)
# ... prints out path to the markdown file
Finally, we can use the
frontmatter.load
method to parse the frontmatter metadata from the file.post = frontmatter.load(mdx_filepath)
print(post.keys())
print(post['title']) # prints "Henlo, FrontMatter"
print(post['date']) # prints "2016-12-16"
Originally posted on my blog. To see new posts without delay, read the posts there and subscribe to my newsletter.
33