16

bibTex ファイルが与えられた場合、それぞれのフィールド (著者、タイトル、ジャーナルなど) を (カスタム スキーマを使用して) MySQL データベースのテーブルに追加する必要があります。

最初の調査を行った後、bib ファイルを xml に変換するために使用できるBibutilsが存在することがわかりました。私の最初のアイデアは、それを XML に変換し、Python で XML を解析して辞書を作成することでした。

私の主な質問は次のとおりです。

  1. この変換を行うためのより良い方法はありますか?
  2. bibTex を直接解析し、Python のフィールドを提供するライブラリはありますか?

(内部的に bibutils を使用するbibliography.parsingを見つけましたが、ドキュメントがあまりなく、動作させるのが難しいと感じています)。

4

5 に答える 5

24

古い質問ですが、現在、パーサーが組み込まれている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
于 2012-12-27T22:00:09.447 に答える
1

XML への変換は良い考えです。

XML は、アプリケーションに依存しないデータ形式として存在するため、すぐに利用できるライブラリで解析できます。それを仲介者として使用することには、特に欠点はありません。実際、通常は、Python などのプログラミング言語を使用しなくても XML をデータベースにインポートできます (ただし、このようなタスクのために作成する必要のある Python の量はごくわずかです)。

私の知る限り、Python 用の直接的な成熟した bibTeX リーダーはありません。

于 2012-02-10T22:46:53.617 に答える
0

Perl パッケージBib2ML (aka. Bib2HTML)を使用できます。bib2sql次のスキーマを使用して、BibTeX データベースから SQL データベースを生成するツールが含まれています。

ここに画像の説明を入力

代替ツール: bibsql および bibtosql

次に、いくつかの SQL 変換クエリを記述して、それをスキーマにフィードできます。

于 2015-10-17T03:34:44.223 に答える