bibtex实用程序的一个小集合(包括一个最小的解析器)

zs.bibtex的Python项目详细描述


https://travis-ci.org/zerok/zs.bibtex.svg?branch=master

这个包目前只包括一个非常基本的bibtex解析器 将书目及其条目转换为类似于dict的简单数据结构 并检查交叉引用(如果使用)。

警告

解析器不(可能永远也不会)支持 先进的bibtex功能,如前言。

它也不会将重音字符转换为Unicode,但是 将它们保留在原始输入中。

用法

关于如何使用它的一个简单示例:

from zs.bibtex.parser import parse_string

data = '''@article{mm09,
    author = {Max Mustermann},
    title = {The story of my life},
    year = {2009},
    journal = {Life Journale}
}'''

bibliography = parse_string(data)
article = bibliography['mm09']

书目以及其中的每个条目都提供了一个validate()方法 它检查诸如书目上的交叉引用和 条目。它还支持可选的raise_unsupported 关键字参数,该参数在可能不受支持的字段出现一次异常 在条目中使用。

关于哪些字段是必需的,哪些字段是可选的 条目基于维基百科上的BibTeX article

如果使用的是文件,还可以使用名为 parse_file(file_or_path, encoding='utf-8', validate=False)在 给定的文件路径或类似文件的对象,并返回 文件的内容。

自定义条目类型

开箱即用zs.bibtex支持以下输入类型进行验证:

  • 文章
  • 书本
  • 小册子
  • 未收款
  • 进行中
  • 会议
  • 笔记本
  • 手动
  • 硕士论文
  • 其他
  • phdthesis
  • 程序
  • 技术报告
  • 未发布

有关哪些字段需要这些字段的详细信息,请查看 zs.bibtex.structures模块。

但如果您需要不同的条目类型,则可以 也很容易注册自己的。

首先必须创建^{tt5}的子类$ 课程:

from zs.bibtex import structures


class MyEntryType(structures.Entry):
    required_fields = ('required_field_1', ('either_this', 'or_that', ), )
    optional_fields = ('optional_field_1', )

然后简单地注册:

structures.TypeRegistry.register('mytype', MyEntryType')

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

推荐PyPI第三方库


热门话题
java计算特定时区中两个ZoneDateTime对象之间的天数?   java如何让@Repository工作?   Java代码生成和运行时执行,Java。lang.NoClassDefFoundError   java connect MySQL数据库与playframework 2.5   javajaxb构造函数注入   Glassfish上支持OSGi的Web应用程序中的java Servlet过滤器   web服务学习Java web服务   java如何访问JSON对象的名称?   java动态报告在报告顶部的每一页上都显示一个hypelrink   java如何为序列化创建线程安全列表?   java Android Studio设置活动启动延迟时出现问题   java邮票自动售货机   java如何为SpringBoot 2创建自定义嵌入式servlet容器   我有像Object[]这样的对象数组。它可以容纳34个用户定义的类和默认的java原语。如何在gson中处理此问题?   PHP使用端口连接到Java程序时出现问题