有没有一种有效的方法来在python中加载大型bibtex(37000 bibtex条目)文件?

时间:2019-02-06 16:52:41

标签: python performance bibtex

在我的python应用程序中,我加载了大约37'000 BibTeX条目。

以下代码段将.txt文件加载为bibtex文件,但是加载文件内容以进行进一步处理需要花费大量时间。有没有办法更有效地做到这一点?

with open('/home/usr/Downloads/bibtexFile.txt') as bibtex_file:
    bibtex_str = bibtex_file.read()

bib_database = bibtexparser.loads(bibtex_str)

2 个答案:

答案 0 :(得分:1)

使用biblib ==0.1.3尝试此操作。文件stats.bib包含格式唯一的bibtex条目。

from pybtex.database.input import bibtex
parser = bibtex.Parser()
bib_data = parser.parse_file('stats.bib')
print (bib_data.entries)

答案 1 :(得分:0)

此代码将帮助您将围兜的内容推入数据框:

from pybtex.database.input import bibtex

#open a bibtex file
parser = bibtex.Parser()
bibdata = parser.parse_file("stats.bib")
bibkeys=bibdata.entries.keys()
bibarray= []

for bib_id in bibdata.entries:
     b = bibdata.entries[bib_id].fields
     if b["year"] is None: 
        dyear='NA'
        print dyear
     else: 
        dyear=b["year"]

     if b.get("journal"):
       djournal=b["journal"]
     else: 
       djournal='NA'  

     if b.get("booktitle"):
       dbooktitle=b["booktitle"]
     else: 
       dbooktitle='NA'      

     d = {
            'bib_id' : bib_id,  # some formula for obtaining values
            'Title' : b["title"],
            'Year' : dyear,
            'Journal' : djournal,
            'Book Title' : dbooktitle
            }
     bibarray.append(d)

bibdataset = pd.DataFrame(bibarray)