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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bd0ebf310714b666eb52b5d174f72e1c27c13e262d7841faacb499a294d71ecd |
|
MD5 | e81d0603dc4db7da89671d7d5c046415 |
|
BLAKE2b-256 | 89d578251e0456243c176f6a34ad0ec9d53808dcbfee563d4cde104d0ee79d9c |
关闭
ply_bibtex_parser-0.1.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e15c03dbe55dba4dbc6ca5e3a7b6bbac11abbd98f135dfa675d15857dac279ce |
|
MD5 | 53af9cf5c77498e7f95126cbcfcfb40a |
|
BLAKE2b-256 | d2caf60f829349cf8a48b536e698a920ce65f8c3fc3bbdb1adbf7811549ac47a |