有没有一种有效的方法可以在 python 中加载大型 bibtex(37000 个 bibtex 条目)文件?
Is there an efficient way to load a large bibtex (37000 bibtex entries) file in python?
在我的 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)
使用 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)
此代码将帮助您将围兜的内容推送到数据框中:
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)
在我的 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)
使用 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)
此代码将帮助您将围兜的内容推送到数据框中:
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)