Konvertieren der Bib-Datenbank in CSV

Konvertieren der Bib-Datenbank in CSV

Ich habe eine Bibliographie zu einem Thema (egal welches Thema, es gibt ungefähr 20 verschiedene Dateien und ungefähr 1000 Datensätze). Ich muss sie in CSV konvertieren (oder in ein anderes Tabellenformat, das in Excel/LibreOffice Calc usw. geöffnet werden kann).

Kann mir jemand ein Tool hierfür nennen?

Antwort1

Öffnen Sie die .bib-Dateien inJabrefund als OpenOffice .csv-Datei exportieren. Sie finden die Option unter dem Menü File,Export

Jabref_export

Da Sie laufen können Jabrefvon derHomepage des Programms, Sie müssen es nicht installieren. Sie benötigen jedoch Java.

Antwort2

Am besten wäre eine Skriptsprache, z. B. Python. Ich weiß nicht, ob Sie Programmierer sind, aber ein Skript zu erstellen, das alle Einträge übernimmt und konvertiert, sollte ziemlich schnell gehen (vorausgesetzt, python script_file.pySie haben keine Angst davor, in die Eingabeaufforderung zu tippen!). Python ist auf den meisten Unix-Betriebssystemen standardmäßig installiert.

Hier ist ein einfaches Python-Skript, das auf einige Felder zugreift:

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

Sie können es Ihren Bedürfnissen anpassen und gewünschte Felder in einer .csvDatei speichern.

Antwort3

Eine Python-Version mit BibtexparserBibtexparserUndPandas

with open('ref.bib') as bibtex_file:
  bib_database = bibtexparser.load(bibtex_file)
df = pd.DataFrame(bib_database.entries)
df.to_csv('ref.csv', index=False)

Und ein minimales funktionierendes Beispiel:

import bibtexparser
import pandas as pd

bibtex = """@article{ einstein1935can,
            title={Can quantum-mechanical description of physical reality be considered complete?},
            author={Einstein, Albert and Podolsky, Boris and Rosen, Nathan},
            journal={Physical review},
            volume={47},number={10},
            pages={777},
            year={1935},
            publisher={APS}}
            @inproceedings{sharma2017daniel,
            title={DANIEL: A deep architecture for automatic analysis and retrieval of building floor plans},
            author={Sharma, Divya and Gupta, Nitin and Chattopadhyay, Chiranjoy and Mehta, Sameep},
            booktitle={2017 14th IAPR International Conference on Document Analysis and Recognition (ICDAR)},
            volume={1},pages={420--425},year={2017},organization={IEEE}}"""

with open('ref.bib', 'w') as bibfile:
  bibfile.write(bibtex)
with open('ref.bib') as bibtex_file:
  bib_database = bibtexparser.load(bibtex_file)
df = pd.DataFrame(bib_database.entries)
df.to_csv('ref.csv', index=False)

Antwort4

Eine weitere Option in R ist die Verwendung des Paketsbib2df:

# Install bib2df
install.packages('bib2df')

# Load bib2df
library(bib2df)

# Set path to .bib
# (Example data)
path <- system.file("extdata", "LiteratureOnCommonKnowledgeInGameTheory.bib", package = "bib2df")

# (Alternatively, your own file)
# path <- 'refs.bib'

# Read .bib as a data.frame
df <- bib2df(path)

# Parse the author and editor columns (list columns cannot be saved directly in a csv)
df$AUTHOR <- vapply(df$AUTHOR, paste, collapse = ' and ', '')
df$EDITOR <- vapply(df$EDITOR, paste, collapse = ' and ', '')

# Export to csv
write.csv(df, 'refs.csv')

verwandte Informationen