Преобразование файла BibTex в записи базы данных с использованием Python
Учитывая файл bibTex, мне нужно добавить соответствующие поля (автор, заголовок, журнал и т.д.) в таблицу в базе данных MySQL (с помощью специальной схемы).
После некоторых начальных исследований я обнаружил, что существует Bibutils, который я мог бы использовать для преобразования файла bib в xml. Моя первоначальная идея состояла в том, чтобы преобразовать его в XML и затем проанализировать XML в python для заполнения словаря.
Мои главные вопросы:
- Есть ли лучший способ сделать это преобразование?
- Есть ли библиотека, которая непосредственно анализирует bibTex и дает мне поля в python?
(Я нашел bibliography.parsing, который использует внутренние библиотеки, но на нем мало документации, и мне трудно получить его работать).
Ответы
Ответ 1
Старый вопрос, но сейчас я делаю то же самое, используя библиотеку Pybtex, в которой встроен парсер:
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
Ответ 2
Преобразование в XML - прекрасная идея.
XML существует как независимый от приложения формат данных, поэтому вы можете анализировать его с помощью доступных библиотек; использование его в качестве посредника не имеет особых недостатков. Фактически, вы можете импортировать XML в базу данных, даже не проходя язык программирования, такой как Python (хотя количество Python, которое вам нужно написать для такой задачи, тривиально).
Насколько я знаю, нет прямого, зрелого читателя bibTeX для Python.
Ответ 3
Вы также можете использовать Python BibtexParser: https://github.com/sciunto/python-bibtexparser
Документация: https://bibtexparser.readthedocs.org
Это очень прямо (я использую его в процессе производства).
Для записи я не являюсь разработчиком этой библиотеки.
Ответ 4
Вы можете использовать пакет Perl Bib2ML (он же Bib2HTML). Он содержит инструмент bib2sql
, который генерирует базу данных SQL из базы данных BibTeX со следующей схемой:
![введите описание изображения здесь]()
Альтернативный инструмент: bibsql и bibtosql.
Затем вы можете отправить его в свою схему, написав некоторые запросы на преобразование SQL.