处理bibtex文件的最佳方法

时间:2012-11-29 16:46:00

标签: python

我有一个bibtex文件,其中包含大约640个条目(上升趋势)。我使用Jabref来维护这个文件。实际上我想要清理东西并做一些事情,Jabref无法帮助。所以我想编写代码并尽可能灵活。

有些任务是例如哪些文章缺少“文件”条目或“标题”条目?哪些文章具有相同的文件条目等。

我的方法是填充一个词典列表。 Dictionary包含bibtex文件中一篇文章的信息。例如:

elements = [{
'author': 'Ando, K. and Ota, H. and Oki, T',
'comment': 'modelling, fundamental diagram, plane, cellular automata',
'file': 'Ando1988.pdf',
'issue': '2',
'journal': 'Railway R',
'owner': 'bob',
'timestamp': '2008.01.09',
'title': 'Forecasting the flow of people',
'type': 'ARTICLE',
'volume': '45',
'year': '1988'},
{'author': "Helbing, D. and Farkas, I. J. and Moln\\'{a}r, P. and Vicsek, T",
'booktitle': 'Pedestrian and Evacuation Dynamics',
'editor': 'Schreckenberg, Michael and Scharma, Som Deo',
'file': 'Helbing2002.pdf',
'key': 'Helbing2002',
'owner': 'jack',
'publisher': 'Springer',
'timestamp': '2007.12.12',
'title': 'Simulation of pedestrian crowds in normal and evacuation situations',
'type': 'INPROCEEDINGS',
'year': '2002'
}]

我在这个结构上运行的函数总是以

之类的东西开始
for element in elements:
   do_stuff with element

虽然我的代码工作正常,但不知怎的,我有一种感觉,我正在做的事情蛮力智慧。这就是为什么我想发起讨论并问你:

  1. 是否有比我正在使用的更整洁/更智能/更优雅的结构 (词典列表)?
  2. 您将如何组织这样的数据 处理信息变得更容易。
  3. 编辑:我想提一下,由于不同类型的文章(BOOK,PROCEEDINGS,ARTICLE等),而且因为我只是人类,所以词典可能有不同的键和不同数量的密钥。

1 个答案:

答案 0 :(得分:0)

字典适用于处理不可预测的键值对。对象适用于处理可预测的键值对(事实上,在Python中,您可以在自己的对象中存储任意属性)。

可能给你的主要优点:

  1. 如果您想预先定义不同类型的条目,并检查您的数据是否符合该模式,那么类和类层次结构将使这更容易
  2. 如果你有很多操作依赖于弄清楚如何处理每个字典,那么这可能会通过继承和多态函数变得更加清晰。
  3. 如果您发现要将集合作为值添加到哈希表中,您可能会更容易在对象上找到编写方法。
  4. 如果您觉得更容易,也可以将所有数据保存在类中。

    你也可以把一堆代码带到codereview.stackexchange,看看你是否喜欢他们重构为对象的建议。