2010-10-28 57 views
7

您好,我想解析一个bibtex发布文件并对特定字段(例如年份)进行排序并过滤某些内容,然后将其放到网站上。我遇到了pybtex,它可以在阅读和解析bibtex文件时工作,但它基本上没有记录,我无法弄清楚如何对条目进行排序。用python将bibtex文件转换为html(可能是pybtex?)

是pybtex的路要走(我如何排序条目)还是有更好的选择?

非常感谢!

回答

10

找到了解决办法,这个排序使用pybtex以降序的条目,最新的出版物先走:

from pybtex.database.input import bibtex 
from operator import itemgetter, attrgetter 
import pprint 
parser = bibtex.Parser() 
bib_data = parser.parse_file('ref.bib') 

def sort_by_year(y, x): 
    return int(x[1].fields['year']) - int(y[1].fields['year']) 

bib_sorted = sorted(bib_data.entries.items(), cmp=sort_by_year) 

for key, value in bib_sorted: 
    print key 
    print value.fields['year'] 
    print value.fields['author'] 
    print value.fields['title']