Path: blob/master/pdf/merge_book.py
687 views
from __future__ import print_function1import io2import nbformat3import sys4from formatting import *567def inplace_change(filename, old_string, new_string):8# Safely read the input filename using 'with'9with open(filename, encoding='utf-8') as f:10s = f.read()11if old_string not in s:12return1314# Safely write the changed content, if found in the file15with open(filename, 'w', encoding='utf-8') as f:16s = s.replace(old_string, new_string)17f.write(s)181920def merge_notebooks(outfile, filenames):21merged = None22added_appendix = False23for fname in filenames:24with io.open(fname, 'r', encoding='utf-8') as f:25nb = nbformat.read(f, nbformat.NO_CONVERT)26#remove_formatting(nb)27if not added_appendix and fname[0:8] == 'Appendix':28remove_links_add_appendix(nb)29added_appendix = True30else:31remove_links(nb)32if merged is None:33merged = nb34else:35merged.cells.extend(nb.cells)36#merged.metadata.name += "_merged"3738outfile.write(nbformat.writes(merged, nbformat.NO_CONVERT))394041if __name__ == '__main__':42with open('book.ipynb', 'w', encoding='utf-8') as f:4344merge_notebooks(f,45['./tmp/00-Preface.ipynb',46'./tmp/01-g-h-filter.ipynb',47'./tmp/02-Discrete-Bayes.ipynb',48'./tmp/03-Gaussians.ipynb',49'./tmp/04-One-Dimensional-Kalman-Filters.ipynb',50'./tmp/05-Multivariate-Gaussians.ipynb',51'./tmp/06-Multivariate-Kalman-Filters.ipynb',52'./tmp/07-Kalman-Filter-Math.ipynb',53'./tmp/08-Designing-Kalman-Filters.ipynb',54'./tmp/09-Nonlinear-Filtering.ipynb',55'./tmp/10-Unscented-Kalman-Filter.ipynb',56'./tmp/11-Extended-Kalman-Filters.ipynb',57'./tmp/12-Particle-Filters.ipynb',58'./tmp/13-Smoothing.ipynb',59'./tmp/14-Adaptive-Filtering.ipynb',60'./tmp/Appendix-A-Installation.ipynb',61'./tmp/Appendix-B-Symbols-and-Notations.ipynb',62'./tmp/Appendix-D-HInfinity-Filters.ipynb',63'./tmp/Appendix-E-Ensemble-Kalman-Filters.ipynb'])646566#remove text printed for matplotlib charts67inplace_change('book.ipynb', '<IPython.core.display.Javascript object>', '')68inplace_change('book.ipynb', '<IPython.core.display.HTML object>', '')6970