2012-02-10 13 views
14

Dado un archivo bibTex, necesito agregar los campos respectivos (autor, título, revista, etc.) a una tabla en una base de datos MySQL (con un esquema personalizado).Convertir el archivo BibTex a las entradas de la base de datos usando Python

Después de hacer una investigación inicial, encontré que existe Bibutils que podría usar para convertir un archivo bib a xml. Mi idea inicial fue convertirlo a XML y luego analizar el XML en python para poblar un diccionario.

Mis principales preguntas son:

  1. ¿Hay una mejor manera de que pudiera hacer esta conversión?
  2. ¿Hay una biblioteca que analiza directamente un BibTex y me da los campos en python?

(que no encontrar bibliography.parsing, que utiliza bibutils internamente, pero no hay mucha documentación en él y que me es difícil de conseguir que funcione).

+0

Pregunte en http://tex.stackexchange.com/ –

Respuesta

1

Convertir a XML es una buena idea.

XML existe como un formato de datos independiente de la aplicación, por lo que puede analizarlo con librerías disponibles; usarlo como intermediario no tiene inconvenientes particulares. De hecho, generalmente puede importar XML en una base de datos sin tener que pasar por un lenguaje de programación como Python (aunque la cantidad de Python que tendría que escribir para una tarea como esta es trivial).

Por lo que sé, no hay un lector bibTeX directo y maduro para Python.

21

vieja pregunta, pero yo estoy haciendo lo mismo en el momento utilizando la biblioteca Pybtex, que tiene un analizador incorporado:

from pybtex.database.input import bibtex 

#open a bibtex file 
parser = bibtex.Parser() 
bibdata = parser.parse_file("myrefs.bib") 

#loop through the individual references 
for bib_id in bibdata.entries: 
    b = bibdata.entries[bib_id].fields 
    try: 
     # change these lines to create a SQL insert 
     print b["title"] 
     print b["journal"] 
     print b["year"] 
     #deal with multiple authors 
     for author in bibdata.entries[bib_id].persons["author"]: 
      print author.first(), author.last() 
    # field may not exist for a reference 
    except(KeyError): 
     continue 
0

Puede usar el paquete Perl Bib2ML (aka. Bib2HTML). Contiene una herramienta bib2sql que genera una base de datos SQL desde una base de datos BibTeX, con el siguiente esquema:

enter image description here

una herramienta alternativa: bibsql and bibtosql.

Luego puede alimentarlo a su esquema escribiendo algunas consultas de conversión SQL.

Cuestiones relacionadas