使用yaml frontmatter解析和管理帖子

python-frontmatter的Python项目详细描述


[jekyll](http://jekyllrb.com/)-styleyaml front matter提供了一种有用的方法,可以向文本文档添加任意的结构化元数据,而不必考虑类型。

这是一个小软件包,用于加载和解析带有yaml前端内容的文件(或只是文本)。

[![生成状态](https://travis-ci.org/eyeseast/python-frontmatter.svg?branch=master)](https://travis-ci.org/eyeseast/python-frontmatter

安装:

pip install python-frontmatter

用法:

>>> import frontmatter

从文件名加载文章:

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

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

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

或从文本加载:

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

访问内容:

>>> 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!'}

如果不需要整个post对象,只需解析:

>>> with open('tests/hello-world.markdown') 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.

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将jaxb插件扩展与gradlejaxbplugin一起使用   java Hibernate列表<Object[]>到特定对象   java使用多态性显示arraylist的输出   java水平堆叠卡,带有一定偏移量   java错误:找不到符号方法liesInt()   java客户机/服务器文件收发中的多线程流管理   在java中可以基于访问重载方法吗?   包含空元素的java排序数组   swing Java按钮/网格布局   java BottomNavigationView getmaxitemcount   java空指针异常字符串生成器   java Xamarin升级导致“类文件版本错误52.0,应为50.0”错误   java我正在尝试打印它,而不只是对每一行进行println   Tomcat7中的java是否需要复制上下文。将xml转换为conf/Catalina/locahost以使其生效   带有注入服务的java REST端点在何处引发自定义WebServiceException?   在Java中使用GPS数据   java如何将JFreeChart ChartPanel导出到包含添加的CrosshairOverlay的图像对象?   内置Eclipse期间的Java 8堆栈溢出   java在GWT编译的JavaScript中如何表示BigDecimal