![Konvertieren der Bib-Datenbank in CSV](https://rvso.com/image/254708/Konvertieren%20der%20Bib-Datenbank%20in%20CSV.png)
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
Da Sie laufen können Jabref
von 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.py
Sie 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 .csv
Datei 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')