是否有可靠的 python 库来获取 BibTex 条目并将其输出为特定格式?

Is there a reliable python library for taking a BibTex entry and outputting it into specific formats?

我正在使用 Python 和 Django 开发一个网站。我想获取 BibTex 条目并将其输出到 3 种不同格式的视图中,MLA、APA 和 Chicago。是否有图书馆已经这样做了,或者我是否必须手动进行字符串格式化?

我所知道的最接近的是pybtex

有以下项目:

如果需要复杂的解析输出,推荐Pybtex。 Example:

>>> from pybtex.database.input import bibtex
>>> parser = bibtex.Parser()
>>> bib_data = parser.parse_file('examples/foo.bib')
>>> bib_data.entries.keys()
[u'ruckenstein-diffusion', u'viktorov-metodoj', u'test-inbook', u'test-booklet']
>>> print bib_data.entries['ruckenstein-diffusion'].fields['title']
Predicting the Diffusion Coefficient in Supercritical Fluids

祝你好运。

经过尝试,所有这些项目都很糟糕,原因有很多:糟糕的 API、糟糕的文档以及无法解析有效的 BibTeX 文件。您想要的实现在大多数 Google 搜索中都没有出现,根据我自己的搜索:它是 biblib。 README 中的这段文字应该卖掉它:

There are a lot of BibTeX parsers out there. Most of them are complete nonsense based on some imaginary grammar made up by the module's author that is almost, but not quite, entirely unlike BibTeX's actual grammar. BibTeX has a grammar. It's even pretty simple, though it's probably not what you think it is. The hardest part of BibTeX's grammar is that it's only written down in one place: the BibTeX source code.

使用 pybtex 的公认答案充满了危险,因为 Pybtex 不保留即使是简单的 bibtex 文件的 bibtex 格式。 (https://bitbucket.org/pybtex-devs/pybtex/issues/130/need-to-specially-represent-bibtex-markup)

Pybtex 因此在阅读时会丢失 bibtex 信息,并且 re-writing 一个简单的 .bib 文件没有进行任何更改。用户应该非常小心地遵循使用 pybtex 的建议。

我也会尝试 biblib 并报告回来,但应该编辑已接受的答案以不推荐 pybtex。

编辑: 我能够使用 Bibtex Parser 导入数据,没有任何数据丢失。但是,我不得不从 https://github.com/sciunto-org/python-bibtexparser 编译,因为当时通过 pip 安装的版本存在漏洞。用户应验证 pip 是否正在获取最新版本。

至于导出,一旦数据通过 BibTex Parser 导入,它就在字典中,并且可以根据用户需要导出。 BibTex Parser 没有以通用格式导出的内置函数。由于我不需要这个功能,所以我没有专门测试它。然而,一旦导入到字典中,字符串输出就可以很容易地转换为任何引用格式。

在这里,pybtex 和自定义样式文件可以提供帮助。我使用了期刊提供的样式文件并改为在 LaTeX 中编译,但是 PyBtex 有 python 样式文件(但也允许摄取 .sty 文件)。所以我建议采用 Bibtex Parser 输入并将其传输到 PyBtex(或类似的)以便以某种样式输出。