使用Python将BibTex文件转换为数据库条目
给定一个bibTex文件,我需要将相应的字段(author、title、journal等)添加到MySQL数据库的表中(使用自定义模式) 在做了一些初步的研究之后,我发现存在一些可以用来将bib文件转换为xml的文件。我最初的想法是将其转换为XML,然后用python解析XML以填充字典 我的主要问题是:使用Python将BibTex文件转换为数据库条目,python,mysql,bibtex,Python,Mysql,Bibtex,给定一个bibTex文件,我需要将相应的字段(author、title、journal等)添加到MySQL数据库的表中(使用自定义模式) 在做了一些初步的研究之后,我发现存在一些可以用来将bib文件转换为xml的文件。我最初的想法是将其转换为XML,然后用python解析XML以填充字典 我的主要问题是: 有没有更好的方法来进行转换 有没有一个库可以直接解析bibTex并用python提供字段 (我确实找到了,它在内部使用了bibutils,但是没有太多的文档,我发现很难让它工作起来)。转换为X
(我确实找到了,它在内部使用了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
您还可以使用Python BibtexParser: 文件: 它非常直接(我在生产中使用它)
恕我直言,我不是这个库的开发人员。您可以使用Perl包。它包含一个
bib2sql
工具,该工具从BibTeX数据库生成一个SQL数据库,模式如下:
另一个工具:
然后,您可以通过编写一些SQL转换查询将其输入到模式中。我的解决方法是使用bibtexparser将相关字段导出到csv文件中
导入bibtexparser
作为pd进口熊猫
打开(“../bib/small.bib”)作为bibtex\u文件:
bib_数据库=bibtexparser.load(bibtex_文件)
df=pd.DataFrame(bib_database.entries)
选择=df[['doi','number']]
选择.to_csv('temp.csv',index=False)
然后将csv写入数据库中的表中,并删除temp.csv
这避免了pybtex I的一些复杂情况。长时间后询问at。我对你在这里做的这些图表很感兴趣。请你和我分享一下你是如何创造它的?