Registry / serialization / bibtexparser

bibtexparser

JSON →
library1.4.4pypypi✓ verified 22d ago

bibtexparser is a Python 3 library for parsing and writing BibTeX files. It provides a simple API to read, modify, and dump BibTeX data. The current stable version is 1.4.4, with active development on a 2.0.0 beta series introducing significant changes. Releases are somewhat irregular, with bugfix and feature releases for the 1.x branch and active development on 2.x.

pip install bibtexparser
INSTALL
IMPORT
SIG · BIBTEXPARSER
B
bibtexparser
serializationpythonv1.4.4
Install
2.6s avg
Import
309ms
Disk
18MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v1.4.4 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.95 runs
installs and imports cleanly · install 0.0s · import 0.332s · 20.4MB
glibc
py 3.103.95 runs
installs and imports cleanly · install 2.6s · import 0.286s · 21MB
18MB installed
● package 18MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

bibtexparser
import bibtexparser

This quickstart demonstrates how to read a BibTeX file, access and modify entries within the `BibDatabase` object, and then write the data back to a new file. It covers both reading with `bibtexparser.read_file` and writing with `bibtexparser.dump`, as well as direct manipulation of `BibDatabase` objects.

import bibtexparser from bibtexparser.bibdatabase import BibDatabase from bibtexparser.bparser import BibTexParser import os # Create a dummy .bib file for demonstration dummy_bib_content = """ @article{doe2023example, title={An Example Article}, author={Doe, John and Smith, Jane}, journal={Journal of Examples}, year={2023}, volume={1}, number={1}, pages={1-10} } @book{smith2022guide, title={A Guide to Everything}, author={Smith, Jane}, publisher={Example Press}, year={2022} } """ # Ensure the file exists for the example with open('temp_references.bib', 'w') as f: f.write(dummy_bib_content) # 1. Read a BibTeX file with open('temp_references.bib') as bibtex_file: # Using the default parser bib_database = bibtexparser.read_file(bibtex_file) print("--- Parsed Database ---") for entry in bib_database.entries: print(f"ID: {entry['ID']}, Title: {entry.get('title')}") # 2. Access and modify entries if bib_database.entries: first_entry = bib_database.entries[0] print(f"\nFirst entry authors: {first_entry.get('author')}") first_entry['note'] = 'Added by example' print(f"First entry new note: {first_entry.get('note')}") # 3. Create a new BibDatabase and add an entry new_bib = BibDatabase() new_bib.entries.append({ 'ID': 'example2024new', 'ENTRYTYPE': 'misc', 'title': 'New Entry Added', 'year': '2024' }) # 4. Dump (write) to a new BibTeX file with open('output.bib', 'w') as output_file: bibtexparser.dump(new_bib, output_file) print("\nNew entry saved to output.bib") # Clean up dummy files os.remove('temp_references.bib') os.remove('output.bib')
Debug
Known issues
breakingVersion 2.0.0 (currently in beta) introduces significant breaking changes. Key changes include the renaming of `entry.pop_field` to `entry.pop`, changes in default arguments for middleware, and potential renames for `write_file` parameters. Code written for 1.x.x will likely not work with 2.x.x without modifications.
fix
Consult the 2.x migration guide upon its release. For now, stick to 1.x.x for production code or thoroughly test beta versions.
affects: 2.0.0bX and later (upcoming 2.0.0 stable)
gotchaThe `BibTexParser` class and `BibDatabase` class are located in submodules (`bibtexparser.bparser` and `bibtexparser.bibdatabase` respectively) and cannot be directly imported from the top-level `bibtexparser` module.
fix
Use explicit submodule imports: `from bibtexparser.bparser import BibTexParser` and `from bibtexparser.bibdatabase import BibDatabase`.
affects: 1.x.x
gotchaVersion 1.4.4 explicitly requires `pyparsing>=3.0.0`. Older versions of `pyparsing` might lead to import errors or parsing issues.
fix
Ensure `pyparsing` is updated to version 3.0.0 or higher (`pip install --upgrade pyparsing`).
affects: 1.4.4
gotchaThe BibTeX entries are stored as dictionaries within the `bib_database.entries` list. Accessing fields like 'title' or 'author' should be done using dictionary syntax (`entry['title']` or `entry.get('title')`). Missing keys will raise a `KeyError` if accessed directly, so `get()` is often safer.
fix
Use `entry.get('field_name', default_value)` for safe access to fields that might be optional or missing from some entries.
affects: 1.x.x
Upgrade
Version history
1.4.4latest on PyPI · released Jan 29, 2026
Audit
Dependencies
pyparsingrequiredRequired for parsing BibTeX files. Version 1.4.4 requires pyparsing>=3.0.0.
Agent activity
14 hits · last 30 days
node
12
OpenAI (training)
1
Resources
bibtexparser — pip install bibtexparser · libregistry