使用Python将BibTex文件转换为数据库条目

2024-05-13 04:59:22 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个bibTex文件,我需要将相应的字段(author、title、journal等)添加到MySQL数据库中的一个表中(使用自定义模式)。

在做了一些初步的研究之后,我发现存在Bibutils可以用来将bib文件转换为xml。我最初的想法是把它转换成XML,然后用python解析XML来填充字典。

我的主要问题是:

  1. 有没有更好的方法我可以做这个转换?
  2. 有没有一个库可以直接解析bibTex并给出python中的字段?

(我确实找到了 bibliography.parsing,它在内部使用bibutils,但是没有太多关于它的文档,而且很难让它工作)。


Tags: 文件方法数据库字典titlemysql模式xml
3条回答

老问题,但我现在正在使用Pybtex库做同样的事情,它有一个内置的解析器:

from pybtex.database.input import bibtex

#open a bibtex file
parser = bibtex.Parser()
bibdata = parser.parse_file("myrefs.bib")

#loop through the individual references
for bib_id in bibdata.entries:
    b = bibdata.entries[bib_id].fields
    try:
        # change these lines to create a SQL insert
        print b["title"]
        print b["journal"]
        print b["year"]
        #deal with multiple authors
        for author in bibdata.entries[bib_id].persons["author"]:
            print author.first(), author.last()
    # field may not exist for a reference
    except(KeyError):
        continue

也可以使用Python BibtexParser:https://github.com/sciunto/python-bibtexparser

文档:https://bibtexparser.readthedocs.org

它非常直截了当(我在生产中使用)。

我不是这个图书馆的开发者。

转换成XML是个好主意。

XML作为一种独立于应用程序的数据格式存在,因此您可以使用现成的库来解析它;将它用作中介没有特别的缺点。事实上,您通常可以将XML导入数据库,甚至不必使用Python之类的编程语言(尽管您为这样的任务编写的Python数量微不足道)。

据我所知,Python没有直接、成熟的bibTeX阅读器。

相关问题 更多 >