2012-11-29 4 views
2

대략 640 개의 항목 (상승 경향)을 포함하는 bibtex 파일이 있습니다. 나는이 파일을 유지 보수하기 위해 Jabref를 사용한다. 사실 Jabref가 도와 줄 수없는 일을 정리하고 물건을 만들고 싶습니다. 그래서 나는 코드를 작성하고 가능한 한 유연하게 생각했습니다.bibtex 파일을 처리하는 가장 좋은 방법

일부 작업은 다음과 같습니다. 어떤 기사에 누락 된 "파일"항목 또는 "제목"항목이 있습니까? 어떤 기사가 같은 파일 항목을 가지고 있습니까?

내 접근 방식은 사전 목록을 채우는 것이 었습니다. 사전에는 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. 정보를 처리하는 데 데이터를 어떻게 구성해야할까요?

편집 : 내가 인해 제품 (BOOK, 소송 절차, 문서 등) 나는 인간을 해요 때문에 사전 다른 키와 다른 키 번호를 가질 수의 다른 유형이 언급하고 싶습니다.

+1

일반적으로 키 집합이 같은 사전이있을 때마다 언어 그레인 (파이썬)을 사용하여 더 많은 클래스 사전의 인스턴스로 만듭니다. – zwol

답변

0

사전은 예측할 수없는 키 - 값 쌍을 처리하는 데 적합합니다. 객체는 예측 가능한 키 - 값 쌍을 다루기에 좋습니다 (실제로 Python에서는 임의의 속성을 객체에 저장할 수 있습니다). 객체 클래스와

주요 장점을 제공 :

  1. 당신이 항목의 다른 유형을 미리 정의하고 데이터가 해당 스키마, 클래스, 클래스에 부합하는지 확인하려면 계층 구조가 더 쉽게 만들 수 있습니다.
  2. 각 사전을 처리하는 방법을 파악하는 데 의존하는 많은 작업을 수행하는 경우 상속 및 다형 함수를 사용하여 더 명확하게 만들 수 있습니다.
  3. 컬렉션을 값으로 해시 테이블에 추가하려는 경우 오브젝트에 대한 쓰기 메소드를 쉽게 찾을 수 있습니다.

더 쉽게 알 수 있다면 수업의 모든 데이터를 사전에 보관할 수도 있습니다.

codereview.stackexchange로 많은 코드를 가져 와서 리팩토링에 대한 제안이 마음에 들지는지 확인할 수 있습니다.

+0

감사합니다. 실제로 저는 일을 빠르게하기 위해 파이썬을 사용합니다. 이런 이유로 나는 결코 객체 지향적이라고 생각하지 않았다. 나는 그것에 대해 생각합니다. – Tengis

관련 문제