Jupyter Notebook in Text umwandeln — kostenlos und privat

Wandeln Sie ein .ipynb-Notebook im Browser in reinen Text um. Entfernt die JSON-Hülle, eingebettete Bilder und Zell-Metadaten, sodass nur Code und Text übrig bleiben.

Jupyter Notebook in Klartext: Extraktion ohne Gerüst

Klartext ist das richtige Ziel, wenn das Gegenüber keine Meinung zur Formatierung hat. Eine grep-Pipeline, ein Diff, ein Suchindex, eine Plagiatsprüfung, eine Nur-Text-Mail an eine Kollegin, die keinen Anhang will — keiner dieser Fälle gewinnt etwas durch Backticks und Rauten, und mehrere werden durch Zeichensetzung, die für ein Rendering etwas bedeutet und für die Lesenden nichts, aktiv schlechter.

Dieser Konverter nimmt eine .ipynb und gibt die Wörter und den Code zurück, ohne hinzugefügte Auszeichnung. Zellen sind durch Leerzeilen getrennt. Code erscheint als Code, ohne Zaun. Ausgegebene Ergebnisse erscheinen unter der Zelle, die sie erzeugt hat, unter einem schlichten Output:. Alles, was das JSON-Format darum herumwickelt, entfällt. Die Arbeit geschieht in diesem Browser-Tab.

Das Token-Argument

Der häufigste Grund, ein Notebook plattzudrücken, ist, dass irgendetwas weiter unten nach Token abrechnet und eine rohe .ipynb eine teure Art ist, sehr wenig zu sagen. Das Verhältnis verdient es, konkret benannt zu werden.

Ein Notebook mit dreißig Zellen, von denen die Hälfte ein Diagramm erzeugt, kommt regelmäßig auf zwei oder drei Megabyte. Prosa und Code darin sind vielleicht acht Kilobyte. Alles Übrige sind Base64-Bilddaten, HTML-Dubletten von Ergebnissen, die auch als Klartext vorliegen, und Buchhaltung je Zelle. Die Rohdatei an ein Modell zu geben kostet nicht nur das Hundertfache des Nötigen — es scheitert meist schlicht, weil sich das Kontextfenster mit Zeichen füllt, die keine Information tragen.

Schlimmer noch: Base64 tokenisiert miserabel. Gewöhnlicher Fließtext liegt bei etwa vier Zeichen je Token. Eine zufällige Base64-Folge bietet dem Vokabular des Tokenizers keine wiederkehrenden Teilzeichenketten und landet daher eher bei einem Token je zwei Zeichen. Der nutzloseste Teil der Datei hat zugleich das schlechteste Verhältnis von Token zu Zeichen. Der Zähler oben zeigt die Token-Zahl des Ergebnisses, damit Sie sehen, was Sie tatsächlich verschicken.

Was das Plattdrücken überlebt

Struktur zu entfernen ist nicht dasselbe wie Bedeutung zu entfernen, und an dieser Grenze entscheidet sich, ob ein Werkzeug dieser Art taugt. Was bleibt:

  • Der Inhalt der Markdown-Zellen, wie geschrieben. Die Zeichen # und ** bleiben, weil sie in einer Markdown-Zelle der einzige Hinweis der Verfasserin auf Betonung und Hierarchie sind. Sie zu entfernen würde ein Dokument, das bereits Prosa war, zu ununterscheidbarem Text einebnen.
  • Der Code, exakt wie getippt. Einrückung erhalten, Kommentare unangetastet. Die Bedeutung von Python hängt von führenden Leerzeichen ab; das ist keine Geschmacksfrage.
  • Textuelle Ergebnisse. Ausgegebene Werte, Rückgabewerte, Dataframe-Vorschauen in ihrer Klartextform.
  • Fehlernamen, Meldungen und Tracebacks, befreit von den Farbcodes des Terminals.
  • Raw-Zellen, in denen meist LaTeX oder reStructuredText steht, das die Verfasserin unangetastet lassen wollte.

Was geht: Bild- und Video-Nutzdaten, PDF-Anhänge, der HTML-Zwilling jedes Ergebnisses, das auch als Text vorliegt, Ausführungszähler, Zell-IDs, leere Metadaten-Objekte und Zellen ohne Inhalt. Eine Zelle, in der nur Leerraum steht und die nichts ausgegeben hat, ist keine Zelle, die jemand lesen muss.

Die Frage nach dem Abbildungs-Platzhalter

Wenn ein Diagramm entfernt wird, markiert man die Lücke oder man tut es nicht. Der Zielkonflikt ist echt. Lässt man nichts stehen, liest sich der Text sauber, aber ein Satz wie „wie das Diagramm oben zeigt“ verweist jetzt auf nichts. Lässt man einen Platzhalter stehen, hat man eine Zeile hinzugefügt, die fast keine Information trägt.

Voreingestellt ist eine kurze Zeile, die den Medientyp nennt; der Schalter oben stellt sie ab. Eine verwandte Feinheit ist wissenswert: matplotlib gibt neben dem Bild auch eine Textdarstellung aus, und die lautet stets ungefähr <Figure size 640x480 with 1 Axes>. Naiv behalten bekommen Sie diese Zeile und den Platzhalter direkt hintereinander, die zweimal dasselbe sagen. Wurde eine Abbildung entfernt, wird genau dieser Text unterdrückt.

Kürzen aus der Mitte

Manche Ausgaben sind lang, weil sie informativ sind, andere, weil eine Schleife hineingeschrieben hat. Das Werkzeug kann den Unterschied nicht erkennen, deckelt daher jede Ausgabe und schneidet aus der Mitte, behält Anfang und Ende und vermerkt, wie viele Zeichen fehlen.

Das Kürzen aus der Mitte schlägt die Alternative aus einem bestimmten Grund: die beiden aufschlussreichsten Teile einer langen Ausgabe sind fast immer der Anfang, der die Gestalt des Erzeugten zeigt, und das Ende, das zeigt, wo es hinauslief. Ein am Ende gekürzter Dataframe zeigt die ersten Zeilen und verbirgt die Zusammenfassungszeile. Am Anfang gekürzt verbirgt er die Spaltennamen. Die Mitte herauszuschneiden behält beide Enden der Geschichte.

Wozu ein plattgedrücktes Notebook praktisch taugt

Einiges wird leichter, sobald das JSON weg ist. Zwei Fassungen eines Notebooks im Klartext zu vergleichen zeigt, was sich an der Analyse geändert hat, statt welche Ausführungszähler hochgezählt sind — dass es nbdime überhaupt gibt, liegt genau daran, dass ein gewöhnliches git diff auf einer .ipynb unlesbar ist. Einen Ordner voller Notebooks nach der Funktion zu durchsuchen, die ein Diagramm gebaut hat, wird wieder zu einem normalen grep. Wörter für einen Bericht zählen, ein Notebook an eine Sprachausgabe geben oder Methodik in ein Dokument einfügen, das kein Markdown rendert: all das funktioniert ohne weitere Nacharbeit.

Datenschutz, und warum er hier strukturell ist

Notebooks sind Arbeitsdokumente, und Arbeitsdokumente sammeln an, was niemand behalten wollte: ein beim Debuggen einer API eingefügtes Token, ein Verbindungsstring, zwanzig Zeilen Kundendaten, ausgegeben zur Kontrolle eines Merge. Das einem Umwandlungsdienst zu geben heißt, alles darin herzugeben.

Der Parser hier ist JavaScript, das in diesem Tab läuft. Ihre Datei wird vom Browser gelesen, im Arbeitsspeicher umgewandelt und angezeigt. Es gibt keinen Upload, also keine Aufbewahrungsrichtlinie, der man glauben müsste, und keine Löschung, die man erbitten müsste. Wenn Sie lieber eingezäunte Code-Blöcke und Markdown-Überschriften hätten, leistet das der Konverter von Notebook zu Markdown mit derselben Zusage.