Есть ли эффективный способ загрузки большого файла bibtex (37000 записей bibtex) в Python? - PullRequest
0 голосов
/ 06 февраля 2019

В моем приложении на 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 голосов
/ 07 февраля 2019

Этот код поможет вам поместить содержимое нагрудника в фрейм данных:

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)
0 голосов
/ 07 февраля 2019

Попробуйте, используя 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)
...