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似乎是 a 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 回答
0

.data.add_entry(key, entry) 对我有用。在这里,我使用了手动创建的条目(取自 Evert 的示例),但您可以从另一个正在解析的围兜复制现有条目。

   from pybtex.database.input.bibtex import Parser
   from pybtex.core import Entry, Person

   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')]},
       )

   newbib_parser = Parser()
   newbib_parser.data.add_entry(key, new_entry)
   print newbib_parser.data
于 2013-12-26T15:23:23.927 回答