nbmanips allows you easily manipulate ipynb files
Project description
nbmanips
A collections of utilities to manipulate IPython/Jupyter Notebooks via a python script.
Usage/Examples
Basic usage
A simple example of using nbmanips:
from nbmanips import Notebook
# Read ipynb file
nb = Notebook.read_ipynb("my_notebook.ipynb")
# delete empty cells
nb.select("empty").delete()
# save ipynb file
nb.to_ipynb("new_notebook.ipynb")
Examples of operations you can perform on a Notebook:
replace
: Replace matching text in the selected cellstag
: Add metadata to the selected cellserase
: Erase the content of the selected cellsdelete
: Delete the selected cellskeep
: Kepp the selected cells
Selectors
To select cells on which to apply the previous operations, you can use:
- The cell number
nb[0].show()
# OR
nb.select(0).show()
- A slice object
nb[1:6:2].show()
# OR
selected_cells = slice(1, 6, 2)
nb.select(selected_cells).show()
-
A predefined selector. Available predefined selectors are the following:
code_cells
/markdown_cells
/raw_cells
: Selects cells with the given typecontains
: Selects Cells containing a certain text.is_empty
/empty
: Selects empty cellshas_output
: Checks if the cell has any outputhas_output_type
: Select cells that have a given output_typehas_slide_type
: Select cells that have a given slide typeis_new_slide
: Selects cells where a new slide/subslide startshas_byte_size
: Selects cells with byte size within a given range of values.
# Show Markdown Cells
nb.select('markdown_cells').show()
# Show Cells containing the equal sign
nb.select('contains', '=').show()
- A function that takes a Cell object and returns True if the cell should be selected
# Show Cells with length > 10
nb.select(lambda cell: len(cell.source) > 10).show()
- A list of Selectors
# Show Empty Markdown Cells
nb.select(['markdown_cells', 'is_empty']).show()
# Show Markdown or Code Cells
nb.select(['markdown_cells', 'code_cells'], type='or').show()
Export Formats
You can export the notebooks to these formats:
- to_ipynb
- to_dbc
- to_html
- to_slides (using reveal.js)
- to_md (to markdown)
- to_py (to python)
- to_text (textual representation of the notebook)
Slide manipulations
You can manipulate the slides by tagging which cells to keep and which to skip. The following actions are available:
- set_slide
- set_subslide
- set_skip
- set_fragment
- set_notes
A neat trick is to use auto_slide
method to automatically create slides out of your notebook:
from nbmanips import Notebook
# Read ipynb file
nb = Notebook.read_ipynb("my_notebook.ipynb")
# Automatically create slides
nb.auto_slide()
# Export to Reveal.js slides (HTML)
nb.to_slides("new_slides.slides.html", theme='beige')
CLI
Show a notebook
To get a readable representation of the notebook
nb show my_notebook.ipynb
To show a subset of the notebook cells, you can perform a select operation:
nb select 0:3 | nb show my_notebook.ipynb
# Or if you're using negative indexes ( to show the last 3 cells )
nb select [-3:] | nb show my_notebook.ipynb
Basic usage
A simple example of using nbmanips via the cli:
# delete empty cells
nb select empty | nb delete my_notebook.ipynb --output new_notebook.ipynb
# Or equivalently:
nbmanips select empty | nbmanips delete my_notebook.ipynb --output new_notebook.ipynb
Export Formats
You can convert a notebook to the following formats:
- html:
nb convert html my_notebook.ipynb --output my_notebook.html
- slides (using reveal.js):
nb convert slides my_notebook.ipynb --output my_notebook.slides.html
- md (to markdown):
nb convert md my_notebook.ipynb --output my_notebook.md
- py (to python):
nb convert py my_notebook.ipynb --output my_notebook.py
Slide manipulations
# Automatically set slides
nb auto-slide -f my_notebook.ipynb
# Generate a my_notebook.slides.html file
nb convert slides my_notebook.ipynb
Or if you do not wish to modify your original notebook:
# Automatically set slides
nb auto-slide my_notebook.ipynb -o my_temp_notebook.ipynb
# Generate a my_notebook.slides.html file
nb convert slides my_temp_notebook.ipynb -o my_notebook.slides.html
If you need more details you can check the --help option:
nbmanips --help
Roadmap
- Add Custom Templates
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.