2012-02-10 6 views
14

bibTexファイルを指定すると、それぞれのフィールド(作成者、タイトル、雑誌など)をMySQLデータベースのテーブル(カスタムスキーマを使用)に追加する必要があります。Pythonを使用してBibTexファイルをデータベースエントリに変換

最初の調査をした後、Bibutilsがあり、bibファイルをxmlに変換することができます。私の最初のアイデアは、XMLに変換し、PythonでXMLを解析して辞書に移入することでした。

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

  1. 私は、この変換を行うことができ、より良い方法はありますか?
  2. bibTexを直接解析し、私にPythonのフィールドを与えるライブラリがありますか?

(私は内部的にbibutilsを使用しますが、そこに多くのドキュメントではありません、それは厳しいそれが仕事を得るために探していた、 bibliography.parsing見つけました)。

+0

http://tex.stackexchange.com/ –

答えて

1

XMLへの変換は良いアイデアです。

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

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

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 
21

古い質問が、私は作り付けのパーサを持っているPybtexライブラリを使用して、現時点で同じことをやっています

非常に単純です(私は本番でそれを使用しています)。

私はこのライブラリの開発者ではありません。

0

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

enter image description here

代替ツール:bibsql and bibtosql

次に、SQL変換クエリを作成してスキーマにフィードできます。