使用Python将BibTex文件转换为数据库条目
问题描述:
给定一个bibTex文件,我需要将各个字段(作者,标题,日志等)添加到MySQL数据库(使用自定义模式)的表中。使用Python将BibTex文件转换为数据库条目
经过一些初步研究,我发现存在Bibutils,我可以用它来将一个bib文件转换为xml。我最初的想法是将其转换为XML,然后在python中解析XML来填充字典。
我的主要问题是:
- 有没有更好的办法,我能做到这一点的转换?
- 有没有一个库直接解析bibTex并给我python中的字段?
(我发现 bibliography.parsing,它在内部使用bibutils,但没有太多的文档,我发现很难让它工作)。
答
转换为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
答
您可以使用Perl包Bib2ML (aka. Bib2HTML)。它包含一个bib2sql
工具,从中文提供数据库生成SQL数据库,使用下面的模式:
一种替代工具:bibsql and bibtosql。
然后,您可以通过编写一些SQL转换查询将其提供给您的模式。
询问http://tex.stackexchange.com/ – 2012-02-11 13:08:52