J'ai créé un script en python pour convertir des fichiers .md au format Scrapbox

introduction

Cible à convertir

Balle

contribution.md


*Le sous-titrage d'image consiste à donner une description en langage naturel à la scène visuelle
    *Codeur neuronal dans ce domaine au cours des 5 dernières années-le décodeur est populaire
        *sota est un encodeur CNN, LSTM(Et transformateur)Il se compose d'un décodeur et d'un mécanisme d'attention.

Dans Markdown, écrivez avec * ou -. Dans scrapbox, un caractère d'espace équivaut à un retrait + puce (cercle noir ●), il sera donc remplacé par un espace.

production.txt


Le sous-titrage d'image consiste à donner une description en langage naturel à la scène visuelle
Codeur neuronal dans ce domaine au cours des 5 dernières années-le décodeur est populaire
sota est un encodeur CNN, LSTM(Et transformateur)Il se compose d'un décodeur et d'un mécanisme d'attention.

スクリーンショット 2020-04-29 21.10.08.png Ça ressemble à ça sur scrapbox

Crochets []

contribution.md


[27]Est un encodeur CNN,Proposer un modèle composé d'un décodeur LSTM

Convertit les crochets [] utilisés pour citer des articles en crochets () La raison en est que dans scrapbox, les crochets [] signifient des liens entre les articles.

production.txt


(27)Est un encodeur CNN,Proposer un modèle composé d'un décodeur LSTM

Titre

contribution.md


## 2.Recherche connexe

### 2.1. Image Captioning

Dans la démarque, h1 à h6 sont exprimés sous forme de titres en continuant le multiple # Il n'y a pas de titre dans scrapbox, alors utilisez plutôt du gras. Mettez les lettres en gras entre crochets []. [[Chaîne de caractères que vous souhaitez mettre en valeur]]

production.txt


[[ 2.Recherche connexe]]

[[ 2.1. Image Captioning]]

スクリーンショット 2020-04-29 21.11.33.png Ça ressemble à ça sur scrapbox

Formule

contribution.md


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

Dans Markdown, vous pouvez exprimer une formule sur une ligne avec $ formule $. Dans scrapbox, vous pouvez faire la même chose avec «[$ formule]».

production.txt


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

スクリーンショット 2020-04-29 21.12.33.png Ça ressemble à ça sur scrapbox

Au fait, dans scrapbox, si vous entrez un numéro de formule tel que «\ tag {1}», il ne rentrera pas dans une ligne, mais ce sera sur deux lignes. Cette fois, nous ne pouvons pas gérer cela.

Audacieux

contribution.md


**Test d'accentuation**

Dans le démarque, vous pouvez l'exprimer en gras en utilisant une méthode telle que «** le caractère que vous souhaitez mettre en valeur **». Dans scrapbox, comme mentionné ci-dessus, il devient [[chaîne de caractères à souligner]].

production.txt


[[Test d'accentuation]]

Code source

Remplacez simplement la chaîne par re et str.replace (). J'apprécierais que vous me fassiez savoir s'il y a quelque chose d'étrange.

La couleur de la surbrillance de la syntaxe a disparu en raison de l'influence de l'échappement \ ...

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)

Comment utiliser

python md2scrapbox.py path/to/some_file.md

Le résultat de la conversion sera renommé et enregistré au même emplacement que l'entrée Dans l'exemple ci-dessus, ce sera path / to / some_file_scrapbox.txt.

Tout ce que vous avez à faire est de coller la chaîne de caractères complétée dans scrapbox.

Recommended Posts

J'ai créé un script en python pour convertir des fichiers .md au format Scrapbox
J'ai créé un script en Python pour convertir un fichier texte pour JSON (pour l'extrait d'utilisateur vscode)
J'ai fait un programme de gestion de la paie en Python!
J'ai fait un script pour afficher des pictogrammes
J'ai créé une bibliothèque qui lit facilement les fichiers de configuration avec Python
J'ai écrit une fonction pour charger le script d'extension Git en Python
J'ai écrit un script pour extraire les liens de pages Web en Python
J'ai écrit un code pour convertir quaternion en angle de graissage de type z-y-x avec Python
Convertir le fichier FBX en ASCII <-> BINARY en Python
J'ai créé une application Web en Python qui convertit Markdown en HTML
Remarque: [Python3] Convertissez datetime en chaîne dans le format de votre choix
Je veux créer une fenêtre avec Python
J'ai créé un outil CLI pour convertir les images de chaque répertoire en PDF
Je souhaite convertir une table convertie en PDF en Python en CSV
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
J'ai créé un programme cryptographique César en Python.
J'ai fait un module en langage C qui filtre les images chargées par Python
J'ai fait un script pour enregistrer la fenêtre active en utilisant win32gui de Python
Je veux écrire en Python! (1) Vérification du format de code
Comment convertir / restaurer une chaîne avec [] en python
Je souhaite intégrer une variable dans une chaîne Python
Je veux facilement implémenter le délai d'expiration en python
J'ai essayé d'implémenter un pseudo pachislot en Python
Un mémorandum pour exécuter un script python dans un fichier bat
J'ai créé un code pour convertir illustration2vec en modèle Keras
Je veux travailler avec un robot en python.
Convertir / renvoyer des objets de classe au format JSON en Python
[Python] Création d'une méthode pour convertir la base en 1 seconde
J'ai créé une bibliothèque python qui fait rouler le rang
J'ai fait un texte Python
[Python] J'ai créé un script qui coupe et colle automatiquement les fichiers du PC local sur un SSD externe.
J'étais sobrement accro à appeler awscli à partir d'un script Python 2.7 enregistré dans crontab
J'ai créé un programme pour convertir des images en art ASCII avec Python et OpenCV
Je ne peux pas dormir tant que je n'ai pas construit un serveur !! (Introduction au serveur Python faite en un jour)
J'ai essayé d'implémenter un automate cellulaire unidimensionnel en Python
J'ai créé un package pour filtrer les séries chronologiques avec python
J'ai créé un lecteur de flux rapide en utilisant feedparser en Python
Script Linux pour convertir les fichiers Markdown du format JupyterLab au format Qiita
J'ai fait une commande pour générer un commentaire pour une table dans Django
J'ai essayé "Comment obtenir une méthode décorée en Python"
J'ai écrit un script pour obtenir un site populaire au Japon
J'ai fait un jeu de puzzle (comme) avec Tkinter of Python
J'ai fait un chronomètre en utilisant tkinter avec python
Un ensemble de fichiers de script qui font wordcloud avec Python3
Je veux ajouter un joli complément à input () en python
J'ai fait un script pour dire bonjour à mon Koshien
J'ai fait un Line-bot avec Python!
J'ai créé un script de traduction basé sur CUI (2)
Convertir Markdown en PDF en Python
J'ai fait une loterie avec Python.
J'ai créé un script de traduction basé sur CUI
J'ai créé un démon avec Python
Déterminez le format de la date et de l'heure avec Python et convertissez-le en Unixtime
Comment passer des arguments à un script Python dans SPSS Modeler Batch
Convertir des fichiers écrits en python, etc. en pdf avec la coloration syntaxique