2

アブストラクトとキーワードのために多くの pdf をスクレイピングするスクリプトを作成しました。また、抽出したテキストを配置する bibtex ファイルのコレクションもあります。私が探しているのは、bibtex ファイルに要素を追加する方法です。

私は短いパーサーを書きました:

#!/usr/bin/python
#-*- coding: utf-8

import os
from pybtex.database.input import bibtex

dir_path = "nime_archive/nime/bibtex/"
num_texts = 0

class Bibfile:
  def __init__(self,bibs):
    self.bibs = bibs
    for a in self.bibs.entries.keys():
      num_text += 1
       print bibs.entries[a].fields['title']
       #Need to implement a way of getting just the nime-identificator
       try:
         print bibs.entries[a].fields['url']
       except:
         print "couldn't find URL for text: %s " % a


    print "creating new bibfile"



bibfiles = []
parser = bibtex.Parser()


for infile in os.listdir(dir_path):
    if infile.endswith(".bib"):
      print infile
      bibfiles = Bibfile(parser.parse_file(dir_path+infile))

私の質問は、Pybtex を使用して要素を既存の bibtex ファイルに追加する (またはコピーを作成する) ことができるかどうかです。これにより、抽出を既に利用可能なものとマージできます。これが Pybtex で不可能な場合、他にどの bibtex パーサーを使用できますか?

4

2 に答える 2

1

私はpybtexを使ったことはありませんが、一見すると、エントリを追加できます。self.bibs.entriesのように見えるのでdict、一意のキーを考え出し、それにさらにエントリを追加できます。例:

key = "some_unique_string"
new_entry = Entry('article',
        fields={
            'language': u'english',
            'title': u'Predicting the Diffusion Coefficient in Supercritical Fluids',
            'journal': u'Ind. Eng. Chem. Res.',
            'volume': u'36',
            'year': u'1997',
            'pages': u'888-895',
        },
        persons={'author': [Person(u'Liu, Hongquin'), Person(u'Ruckenstein, Eli')]},
    )
self.bibs.entries[key] = new_entry

(注意: 未テスト)

この例のフォームをどこで入手したか疑問に思われる場合はtests/、pybtex のソースのサブディレクトリを見てください。上記のコード例は、主に から取得しましたtests/database_test/data.py。実際のドキュメントが不足している場合、テストはドキュメントの優れたソースになる可能性があります。

于 2012-12-11T13:24:54.083 に答える