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

问题描述:

给定一个bibTex文件,我需要将各个字段(作者,标题,日志等)添加到MySQL数据库(使用自定义模式)的表中。使用Python将BibTex文件转换为数据库条目

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

我的主要问题是:

  1. 有没有更好的办法,我能做到这一点的转换?
  2. 有没有一个库直接解析bibTex并给我python中的字段?

(我发现 bibliography.parsing,它在内部使用bibutils,但没有太多的文档,我发现很难让它工作)。

+0

询问http://tex.stackexchange.com/ – 2012-02-11 13:08:52

转换为XML是一个好主意。

XML作为独立于应用程序的数据格式存在,因此您可以使用随时可用的库进行分析;使用它作为中介没有特别的缺点。实际上,您通常可以将XML导入数据库,而无需使用像Python这样的编程语言(尽管您必须为此类任务编写的Python数量微不足道)。

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

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 

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

这是非常直接的(我在生产中使用它)。

有关记录,我不是这个图书馆的开发者。

您可以使用Perl包Bib2ML (aka. Bib2HTML)。它包含一个bib2sql工具,从中文提供数据库生成SQL数据库,使用下面的模式:

enter image description here

一种替代工具:bibsql and bibtosql

然后,您可以通过编写一些SQL转换查询将其提供给您的模式。