跳转到主要内容

BibTeX的基于ply的简单解析器

项目描述

ply-bibtex-parser

BibTeX的基于ply的简单解析器

ply是一个易于使用的、纯Python解析器生成器。然而,它并不是最现代或性能最好的工具。

这主要是一个关于编写简单解析器的学术练习,但我将它用于我的个人网站,以便解析.bib文件以识别不同的引用,并在重新格式化后将其写回。

安装

pip install ply-bibtex-parser

用法

解析

主要入口点是parser

from ply_bibtex_parser import parser
input = '@article{citekey, author={Smith, Micah J.}, title={Foo bar}}'
parser.parse(input)
# [BibtexEntry(type='article', key='citekey', fields={'author': '{Smith, Micah J.}', 'title': '{Foo bar}'})]

解析器生成一个可能为空的BibtexEntry对象列表。请注意,在条目中通常用大括号分隔的值包含大括号:这使得在无需尝试转义其内容的情况下写回BibTeX条目变得很容易。调用者负责进一步解析值,如果他们打算在使用转义后执行字符串。

词法分析

您还可以直接使用lexer

from ply_bibtex_parser import lexer
input = '@article{citekey, author={Smith, Micah J.}, title={Foo bar}}'
lexer.input(input)
for tok in lexer:
    print(tok)
# LexToken(AT,'@',1,0)
# LexToken(ID,'article',1,1)
# LexToken(ENTRYBEGIN,'{',1,8)
# LexToken(ID,'citekey',1,9)
# LexToken(COMMA,',',1,16)
# LexToken(ID,'author',1,18)
# LexToken(EQUALS,'=',1,24)
# LexToken(VALUE,'{Smith, Micah J.}',1,41)
# LexToken(COMMA,',',1,42)
# LexToken(ID,'title',1,44)
# LexToken(EQUALS,'=',1,49)
# LexToken(VALUE,'{Foo bar}',1,58)
# LexToken(ENTRYEND,'}',1,59)

开发

安装

pip install poetry
poetry install

检查

inv test lint

限制

请参阅./ply_bibtex_parser/lexer.py./ply_bibtex_parser/parser.py中的TODO说明。

项目详情


下载文件

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

源分布

ply-bibtex-parser-0.1.0.tar.gz (4.8 kB 查看哈希值)

上传时间

构建分布

ply_bibtex_parser-0.1.0-py3-none-any.whl (5.1 kB 查看哈希值)

上传时间 Python 3

支持