Конвертировать файл BibTex в записи базы данных, используя Python - PullRequest
15 голосов
/ 11 февраля 2012

Учитывая файл bibTex, мне нужно добавить соответствующие поля (автор, заголовок, журнал и т. Д.) В таблицу в базе данных MySQL (с пользовательской схемой).

Проведя некоторые начальные исследования, я обнаружил, что существует Bibutils , который я мог бы использовать для преобразования файла bib в xml.Моя первоначальная идея состояла в том, чтобы преобразовать его в XML и затем проанализировать XML в python для заполнения словаря.

Мои основные вопросы:

  1. Есть ли лучший способ, которым я мог бы сделать этопреобразование?
  2. Существует ли библиотека, которая непосредственно анализирует bibTex и выдает мне поля в python?

(я нашел bibliography.parsing , который использует bibutils для внутреннего использованияно документации по ней немного, и мне трудно заставить ее работать).

Ответы [ 4 ]

23 голосов
/ 28 декабря 2012

Старый вопрос, но сейчас я делаю то же самое, используя библиотеку 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
1 голос
/ 28 января 2014

Вы также можете использовать Python BibtexParser: https://github.com/sciunto/python-bibtexparser

Документация: https://bibtexparser.readthedocs.org

Это очень просто (я использую его в производстве).

Длязапись, я не разработчик этой библиотеки.

1 голос
/ 11 февраля 2012

Преобразование в XML - хорошая идея.

XML существует как независимый от приложения формат данных, так что вы можете анализировать его с помощью легкодоступных библиотек; использование его в качестве посредника не имеет особых недостатков. Фактически, вы обычно можете импортировать XML в базу данных, даже не используя такой язык программирования, как Python (хотя количество Python, которое вам придется написать для такой задачи, тривиально).

Насколько я знаю, нет прямого, зрелого читателя bibTeX для Python.

0 голосов
/ 17 октября 2015

Вы можете использовать пакет Perl Bib2ML (он же Bib2HTML) . Он содержит инструмент bib2sql, который генерирует базу данных SQL из базы данных BibTeX со следующей схемой:

enter image description here

Альтернативный инструмент: bibsql и bibtosql .

Затем вы можете передать его в свою схему, написав несколько запросов преобразования SQL.

...