Ich habe ein Skript in Python erstellt, um MDD-Dateien in das Scrapbox-Format zu konvertieren

Einführung

Zu konvertierendes Ziel

Kugel

Eingang.md


*Bildunterschriften sind die Aufgabe, der visuellen Szene eine Beschreibung in natürlicher Sprache zu geben
    *Neuronaler Encoder in diesem Bereich in den letzten 5 Jahren-Decoder ist beliebt
        *sota ist ein CNN-Encoder, LSTM(Und Transformator)Es besteht aus einem Decoder und einem Aufmerksamkeitsmechanismus.

Schreiben Sie im Markdown mit * oder -. In der Scrapbox entspricht ein Leerzeichen einem Einzug + Aufzählungszeichen (schwarzer Kreis ●) und wird daher durch ein Leerzeichen ersetzt.

Ausgabe.txt


Bildunterschriften sind die Aufgabe, der visuellen Szene eine Beschreibung in natürlicher Sprache zu geben
Neuronaler Encoder in diesem Bereich in den letzten 5 Jahren-Decoder ist beliebt
sota ist ein CNN-Encoder, LSTM(Und Transformator)Es besteht aus einem Decoder und einem Aufmerksamkeitsmechanismus.

スクリーンショット 2020-04-29 21.10.08.png Auf Scrapbox sieht es so aus

Eckige Klammern []

Eingang.md


[27]Ist ein CNN-Encoder,Vorschlag eines Modells bestehend aus LSTM-Decoder

Konvertiert eckige Klammern [], die zum Zitieren von Papieren verwendet werden, in runde Klammern () Der Grund dafür ist, dass in Scrapbox eckige Klammern [] Verknüpfungen zwischen Artikeln bedeuten.

Ausgabe.txt


(27)Ist ein CNN-Encoder,Vorschlag eines Modells bestehend aus LSTM-Decoder

Titel

Eingang.md


## 2.Verwandte Forschung

### 2.1. Image Captioning

Im Abschlag werden h1 bis h6 als Überschriften ausgedrückt, indem mehrere "#" fortgesetzt werden. In der Scrapbox befindet sich keine Überschrift. Verwenden Sie stattdessen Fettdruck. Schließen Sie fette Buchstaben in eckige Klammern ein []. [[Zeichenfolge, die Sie hervorheben möchten]]

Ausgabe.txt


[[ 2.Verwandte Forschung]]

[[ 2.1. Image Captioning]]

スクリーンショット 2020-04-29 21.11.33.png Auf Scrapbox sieht es so aus

Formel

Eingang.md


$f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)$

In Markdown können Sie eine Formel in einer Zeile mit "$ formel " ausdrücken. In Scrapbox können Sie dasselbe mit `[ Formel]` tun.

Ausgabe.txt


[$ f_t = \sigma(W_f \cdot (h_{t-1}, x_t) + b_f)]

スクリーンショット 2020-04-29 21.12.33.png Auf Scrapbox sieht es so aus

Wenn Sie in Scrapbox eine Formelnummer wie "\ tag {1}" eingeben, passt diese übrigens nicht in eine Zeile, sondern in zwei Zeilen. Diesmal können wir damit nicht umgehen.

Fett gedruckt

Eingang.md


**Schwerpunkttest**

Im Markdown können Sie es fett ausdrücken, indem Sie eine Methode wie "** das Zeichen, das Sie hervorheben möchten" verwenden. In der Scrapbox wird es, wie oben erwähnt, zu "[[hervorzuhebende Zeichenfolge]]".

Ausgabe.txt


[[Schwerpunkttest]]

Quellcode

Ersetzen Sie einfach den String durch "re" und "str.replace ()". Ich würde mich freuen, wenn Sie mich wissen lassen könnten, ob es etwas Seltsames gibt.

Die Farbe des Syntax-Highlights ist aufgrund des Einflusses von Escape \ ... verschwunden.

md2scrapbox.py



import os
import argparse
import re

parser = argparse.ArgumentParser()
parser.add_argument("in_file")
args = parser.parse_args()

sentence = "" # output
tab = "    " 
space = " "
bullet = "* "
strong = r"\*\*.*\*\*.?"
title = r"#*"
math = r"\$[^\$]*\$"

with open(args.in_file, "r") as f:
    lines = f.readlines()
for line in lines:

    # blaket    
    line = line.replace("[", "(")
    line = line.replace("]", ")")


    # indentation
    for m in re.finditer(tab, line):
        line = re.sub(tab, space, line)
    line = line.replace(bullet, space, 1)


    # title
    m = re.search(title, line)
    if len(m.group()) > 0:
        line = "[[" + line[m.end():].replace("\n", "") + "]]\n"
        
        
    # math
    m = re.findall(math, line)
    if m:
        for matched in m:
            m2 = re.sub(r"^\$", "[$ ", matched)
            m2 = re.sub(r"\$$", "]", m2)
            line = line.replace(matched, m2)
        sentence += line
        continue
    else:
        # enphasis
        m = re.findall(strong, line)
        if m:
            for matched in m:
                m2 = re.sub(r"^\*\*", "[[", matched)
                m2 = re.sub(r"\*\*$", "]]", m2)
                line = line.replace(matched, m2)
        sentence += line

print("==========")
print(sentence)

dirname = os.path.dirname(args.in_file)
name = os.path.basename(args.in_file)
name, ext = os.path.splitext(name)
name = name + "_scrapbox.txt"
name = os.path.join(dirname, name)
print(name)

with open(name, "w") as f:
    f.write(sentence)

Wie benutzt man

python md2scrapbox.py path/to/some_file.md

Das Konvertierungsergebnis wird umbenannt und am selben Speicherort wie die Eingabe gespeichert Im obigen Beispiel ist es "path / to / some_file_scrapbox.txt".

Sie müssen lediglich die fertige Zeichenfolge in die Scrapbox einfügen.

Recommended Posts

Ich habe ein Skript in Python erstellt, um MDD-Dateien in das Scrapbox-Format zu konvertieren
Ich habe ein Skript in Python erstellt, um eine Textdatei für JSON zu konvertieren (für das vscode-Benutzer-Snippet).
Ich habe ein Pay-Management-Programm in Python erstellt!
Ich habe ein Skript erstellt, um Piktogramme anzuzeigen
Ich habe eine Bibliothek erstellt, die Konfigurationsdateien mit Python einfach lesen kann
Ich habe eine Funktion zum Laden des Git-Erweiterungsskripts in Python geschrieben
Ich habe ein Skript geschrieben, um Webseiten-Links in Python zu extrahieren
Ich habe einen Code geschrieben, um die Quaternion mit Python in einen Ölerwinkel vom Typ z-y-x umzuwandeln
Konvertieren Sie die FBX-Datei in Python in ASCII <-> BINARY
Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
Hinweis: [Python3] Konvertiert datetime in eine Zeichenfolge in einem beliebigen Format
Ich möchte mit Python ein Fenster erstellen
Ich habe ein CLI-Tool erstellt, um Bilder in jedem Verzeichnis in PDF zu konvertieren
Ich möchte eine in Python in PDF konvertierte Tabelle wieder in CSV konvertieren
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Ich habe ein Caesar-Kryptografieprogramm in Python erstellt.
Ich habe ein Modul in C-Sprache erstellt, das von Python geladene Bilder filtert
Ich habe ein Skript erstellt, das das aktive Fenster mit win32gui von Python aufzeichnet
Ich möchte in Python schreiben! (1) Überprüfung des Codeformats
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Ich möchte eine Variable in einen Python-String einbetten
Ich möchte Timeout einfach in Python implementieren
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
Ein Memorandum zum Ausführen eines Python-Skripts in einer Bat-Datei
Ich habe einen Code erstellt, um illustration2vec in ein Keras-Modell zu konvertieren
Ich möchte mit einem Roboter in Python arbeiten.
Konvertieren / Zurückgeben von Klassenobjekten in das JSON-Format in Python
[Python] Erstellt eine Methode zum Konvertieren von Radix in 1 Sekunde
Ich habe eine Python-Bibliothek erstellt, die einen rollierenden Rang hat
Ich habe einen Python-Text gemacht
[Python] Ich habe ein Skript erstellt, das Dateien auf dem lokalen PC automatisch ausschneidet und auf eine externe SSD einfügt.
Ich war nüchtern süchtig danach, awscli von einem in crontab registrierten Python 2.7-Skript aus aufzurufen
Ich habe ein Programm erstellt, um Bilder mit Python und OpenCV in ASCII-Grafik umzuwandeln
Ich kann nicht schlafen, bis ich einen Server erstellt habe !! (Einführung in den Python-Server an einem Tag)
Ich habe versucht, einen eindimensionalen Zellautomaten in Python zu implementieren
Ich habe ein Paket erstellt, um Zeitreihen mit Python zu filtern
Ich habe einen schnellen Feed-Reader mit Feedparser in Python erstellt
Linux-Skript zum Konvertieren von Markdown-Dateien vom JupyterLab-Format in das Qiita-Format
Ich habe einen Befehl zum Generieren eines Kommentars für eine Tabelle in Django eingegeben
Ich habe versucht "Wie man eine Methode in Python dekoriert"
Ich habe ein Skript geschrieben, um eine beliebte Seite in Japan zu bekommen
Ich habe mit Tkinter of Python ein Puzzlespiel (wie) gemacht
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Eine Reihe von Skriptdateien, die Wordcloud mit Python3 ausführen
Ich möchte eine schöne Ergänzung zu input () in Python hinzufügen
Ich habe ein Drehbuch gemacht, um bei meinem Koshien Hallo zu sagen
Ich habe einen Line-Bot mit Python gemacht!
Ich habe ein CUI-basiertes Übersetzungsskript erstellt (2)
Konvertieren Sie Markdown in Python in PDF
Ich habe mit Python eine Lotterie gemacht.
Ich habe ein CUI-basiertes Übersetzungsskript erstellt
Ich habe mit Python einen Daemon erstellt
Bestimmen Sie das Datums- und Uhrzeitformat mit Python und konvertieren Sie es in Unixtime
Übergeben von Argumenten an Python-Skripte in SPSS Modeler Batch
Konvertieren Sie in Python usw. geschriebene Dateien in PDF mit Syntax-Hervorhebung