تبدیل دفترچه‌های یادداشت به اسکریپت‌های پایتون و بالعکس، روش تمیز


برای مستند سازی و تهیه راهنمای استفاده از پکیج اضافه کردن دفترچه یادداشت به مخزن گیتهاب و دنبال کردن تغییرات اون معمولا کار تمیزی نیست. گاهی با باز کردن فایل دفترچه یادداشت نیاز هست دوباره تغییرات به مخزن اضافه بشه. برای رفع این مشکل راه های مختلفی پیشنهاد شده. مثلا حذف کردن متادیتاها از نوتبوک. پاک کردن نتایج از نوتبوک یا استفاده از jupytext. هر کدام از اینها معایب و مزایایی دارن.
علاوه بر این ها هم ممکن هست بخواهیم اسکریپت رو در کولب اجرا کنیم و بنابراین زحمت ساخت سلول های زیاد با کپی کردن های بخش هایی از کد را به خود ندهیم.
اسکریپت زیر یک راه تمیز برای تبدیل دفترچه یادداشت به اسکریپت پیشنهاد میدهد. در حالی که خط های اضافی جدا کننده‌ی سلول ‌ها و خط های خالی اضافی را هم پاک میکند.

import re
import nbformat
from nbconvert import PythonExporter

def j2p(notebookPath, modulePath):

 with open(notebookPath) as fh:
        nb = nbformat.reads(fh.read(), nbformat.NO_CONVERT)

    exporter = PythonExporter()
    source, meta = exporter.from_notebook_node(nb)
 
 # remove lines start with `# In[` from source
    source = re.sub(r'^# In\[[0-9 ]*\]:\n', '', source, flags=re.MULTILINE)
 
 # replace more that 1 empty lines with 1 empty line
    source = re.sub(r'\n{2,}', '\n\n', source)

 with open(modulePath, &quotw+&quot) as fh:
        fh.writelines(source)

j2p(&quotsample.ipynb&quot, &quotsample.py&quot)

برای تبدیل اسکریپت به دفترچه یادداشت هم :

p2j -o sample.py