跳转到主要内容

解析和管理带有YAML(或其它)frontmatter的帖子

项目描述

Python Frontmatter

Jekyll-风格的YAML front matter提供了一种向文本文件添加任意结构化元数据的有用方法,无论文件类型如何。

这是一个用于加载和解析带有YAML(或JSON、TOML或其他)front matter的文件(或文本)的小型包。

Tests PyPI

文档

安装

pip install python-frontmatter

使用

>>> import frontmatter

从文件名加载帖子

>>> post = frontmatter.load('tests/yaml/hello-world.txt')

或文件(或类似文件的对象)

>>> with open('tests/yaml/hello-world.txt') as f:
...     post = frontmatter.load(f)

或从文本加载

>>> with open('tests/yaml/hello-world.txt') as f:
...     post = frontmatter.loads(f.read())

如果文件有字节顺序标记 (BOM),请先将其移除。一种简单的方法是使用utf-8-sig编码

>>> with open('tests/yaml/hello-world.txt', encoding="utf-8-sig") as f:
...     post = frontmatter.load(f)

访问内容

>>> print(post.content)
Well, hello there, world.

# this works, too
>>> print(post)
Well, hello there, world.

使用元数据(元数据作为帖子键代理)

>>> print(post['title'])
Hello, world!

元数据是一个字典,具有一些方便的代理

>>> sorted(post.keys())
['layout', 'title']

>>> from pprint import pprint
>>> post['excerpt'] = 'tl;dr'
>>> pprint(post.metadata)
{'excerpt': 'tl;dr', 'layout': 'post', 'title': 'Hello, world!'}

如果您不需要整个帖子对象,只需解析即可

>>> with open('tests/yaml/hello-world.txt') as f:
...     metadata, content = frontmatter.parse(f.read())
>>> print(metadata['title'])
Hello, world!

也可以写入纯文本

>>> print(frontmatter.dumps(post)) # doctest: +NORMALIZE_WHITESPACE
---
excerpt: tl;dr
layout: post
title: Hello, world!
---
Well, hello there, world.

或写入文件(或类似文件的对象)

>>> from io import BytesIO
>>> f = BytesIO()
>>> frontmatter.dump(post, f)
>>> print(f.getvalue().decode('utf-8')) # doctest: +NORMALIZE_WHITESPACE
---
excerpt: tl;dr
layout: post
title: Hello, world!
---
Well, hello there, world.

更多示例,请参阅tests/目录中的文件。每个样本文件都有一个相应的.result.json文件,显示预期的解析输出。还可以查看examples/目录,该目录涵盖了更多自定义输入和输出的方式。

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于 安装包 的信息。

源分发

python-frontmatter-1.1.0.tar.gz (16.3 kB 查看哈希值)

上传时间

构建分发

python_frontmatter-1.1.0-py3-none-any.whl (9.8 kB 查看哈希值)

上传时间 Python 3

由以下支持