Skip to main content
 首页 » 编程设计

python之在 Python 中将元素添加到 bibtexfile

2025年05月04日6www_RR

我创建了一个脚本,可以抓取许多 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 解析器?

请您参考如下方法:

我从来没有用过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 

(警告:未经测试)

如果您想知道我从哪里得到这个示例表单:请查看 pybtex 源代码的 tests/ 子目录。我主要从tests/database_test/data.py得到上面的代码示例。如果缺少实际文档,测试可能是一个很好的文档来源。