跳转到主要内容

YAML文档分割器,具有返回文档、起始行号和可选数据的迭代器

项目描述

https://sourceforge.net/p/ruamel-yaml-split/code/ci/default/tree/_doc/_static/license.svg?format=raw https://sourceforge.net/p/ruamel-yaml-split/code/ci/default/tree/_doc/_static/pypi.svg?format=raw https://sourceforge.net/p/oitnb/code/ci/default/tree/_doc/_static/oitnb.svg?format=raw

此软件包提供YAML文档分割器,允许您迭代UTF-8编码的文件中的YAML文档,并返回每个文档、起始行号以及可选的加载数据。

使用此方法比使用load_all()有优势,您可以跳过已知的无法加载的文档,或在使用前进行测试/转换。例如,R markdown文件具有YAML标题后跟非YAML主体(当然,如果R markdown中的标题后面跟着 --- | 而不是仅目录结束标记(---),那就更好了,这样您就可以使用任何兼容的YAML解析器来加载两者了)

您可以使用以下方式获取每个文档

from pathlib import Path
from ruamel.yaml.split import split

for doc, line_nr in split(Path('input.yaml')):
    print(doc.decode('utf-8'), line_nr)

line_nr指示文档的起始行,并可用于错误偏移,例如解析文档时生成的错误。

您还可以提供一个YAML()实例来获取为您加载的文档

import ruamel.yaml

for doc, data, line_nr in split(Path('input.yaml'), yaml=ruamel.yaml.YAML()):
    print(doc.decode('utf-8'), data, line_nr)

您提供的YAML()实例用于加载所有文档。

默认情况下,split() 在文档结束标记(...)之后的行结束符处分割,因此文档结束标记所在行的任何注释都是文档的一部分。通过从 ruamel.yaml.split 导入的一些常量,您可以将这些常量提供给 split() 函数的 cmnt 参数,从而影响文档之间注释的分割位置。 C_PRE 将此类注释添加到前一个文档,C_POST 添加到下一个文档。 C_SPLIT_ON_FIRST_BLANK 在第一个空白行后分割,并分配给两个文档。

from ruamel.yaml.split import C_SPLIT_ON_FIRST_BLANK

for doc, data, line_nr in split(Path('input.yaml'), cmnt=C_SPLIT_ON_FIRST_BLANK):
    print(doc.decode('utf-8'), line_nr)

文档流末尾的注释全部附加到最后一个文档,与 cmnt 参数无关。

项目详情


下载文件

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

源分发

ruamel.yaml.split-0.2.2.tar.gz (15.8 kB 查看哈希值)

上传时间

构建分发

ruamel.yaml.split-0.2.2-py3-none-any.whl (7.1 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面