J'étudie actuellement la production Web, mais lors de l'enregistrement d'un extrait d'utilisateur avec VS Code, il était difficile d'ajouter des guillemets doubles au début et à la fin de chaque ligne. J'ai créé mon propre script python qui convertit le contenu du fichier dans une forme facile à utiliser avec JSON. (La raison pour laquelle c'est Web mais pas JavaScript, c'est que je n'y suis pas encore habitué)
conv signifie conversion
json_conv.py
'''
Un script qui convertit le texte du fichier cible afin qu'il puisse être utilisé comme valeur JSON.
(i)Tous"""Derrière"\\", Et
(ii)Symbole de tabulation pour toutes les entrées de tabulation(\\t)Remplacer par
(iii)3 onglets au début de chaque ligne et """, À la fin de la ligne"",", Et
(iv)À la toute fin du document""Est ajouté.
Premier fichier d'arguments(input_file)Est converti en fonction de, et le résultat est le fichier du deuxième argument(output_file)Écrire à.
(output_Si le fichier n'est pas spécifié, saisissez_Écraser le fichier tel quel)
Vous pouvez également importer une fonction portant le même nom qu'un module.
(Comment écrire une commande)
> python -m json_conv.py (input_file) (output_file(Tout))
'''
def json_conv(input_file, output_file=None, n_tab=3):
'''
Une fonction qui convertit le texte dans le fichier cible afin qu'il puisse être utilisé comme valeur JSON.
(i)Tous"""Derrière"\\", Et
(ii)Symbole de tabulation pour toutes les entrées de tabulation(\\t)Remplacer par
(iii)Au début de chaque ligne(n_tab)Tabulation et """, À la fin de la ligne"",", Et
(iv)À la toute fin du document""Est ajouté.
Nombre d'entrées de tabulation à insérer au début d'une ligne(n_tab)La valeur par défaut pour est 3.
input_Convertir à partir du fichier et afficher le résultat_Écrire dans un fichier.
(output_Si le fichier n'est pas spécifié, saisissez_Écraser le fichier tel quel)
'''
# output_Si le fichier n'est pas spécifié, saisissez_Définir le fichier comme destination de sortie
if output_file is None:
output_file = input_file
with open(input_file, mode="r", encoding="utf-8") as file:
processed_txt = "" #Définir une chaîne pour la sortie
for line in file:
replaced_line = line.replace('\"', '\\\"') #"" Dans le document"""\"Remplacé par
replaced_line = replaced_line.replace("\t", "\\t") #Symbole d'onglet d'entrée d'onglet(\t)Remplacer par
replaced_line = replaced_line.replace('\n', '\",\n') #Juste avant le saut de ligne(=Fin de ligne)À "",Insérer
processed_line = '\t' * n_tab + '\"' + replaced_line #Au début de la ligne(n_tab)Onglets et ""Insérer (n dans l'argument)_Si l'onglet n'est pas spécifié, 3 onglets seront insérés)
processed_txt += processed_line #Ajouter des lignes traitées à la chaîne de sortie
processed_txt += "\"" #La toute fin du document(=\Fin de ligne sans n)À """Ajouter
print("\n Enregistrer la destination: " + output_file + "\n")
print("Document converti")
print("-----------------------------------------\n")
print(processed_txt)
print("\n-----------------------------------------\n")
while True:
#Il vous sera demandé si vous voulez vraiment écrire dans le fichier spécifié
answer = input("Voulez-vous vraiment l'enregistrer dans le fichier spécifié? (S'il existe déjà, il sera écrasé)(y/n) ")
#Si y est sélectionné, la sortie_Ecrire le document converti dans le fichier spécifié dans le fichier(Entrée par défaut_Écraser le fichier)
if answer == 'y':
with open(output_file, mode="w", encoding="utf-8") as file:
file.write(processed_txt)
break
#Si n est sélectionné, quitter sans écrire
if answer == 'n':
break
#Si vous entrez autre chose, vous serez à nouveau invité
else:
continue
#Traitement lors de l'exécution sur la ligne de commande
if __name__ == "__main__":
import sys
try:
selected_input = sys.argv[1] #Spécifiez le premier argument de la ligne de commande comme fichier source de conversion
#Génère une erreur si aucun argument de ligne de commande n'est passé
except IndexError:
raise TypeError("Aucun fichier d'entrée spécifié")
try:
selected_output = sys.argv[2] #Spécifiez le deuxième argument de la ligne de commande comme destination d'enregistrement du fichier converti
json_conv(selected_input, selected_output) #Exécuter la fonction de conversion
except IndexError:
json_conv(selected_input) #Si vous ne spécifiez pas le deuxième argument, transmettez uniquement le premier argument et exécutez la fonction(Écraser le fichier source)
Le processus est exécuté dans l'ordre.
Dans JSON, j'ai eu une erreur s'il y avait un espace dû à un onglet, j'ai donc remplacé l'onglet par \ t
. La raison pour laquelle vous échappez d'abord à "" "est qu'autrement, le" "" entourant chaque ligne sera incorrect.
De plus, dans docstring, afin de corriger l'affichage lorsque la fonction est survolée par vscode, elle est échappée en ajoutant \
après \
.
Je l'ai défini comme une fonction afin qu'il puisse également être utilisé comme module.
Dans la fonction, en spécifiant n_tab
, le nombre de blancs de tabulation insérés au début de la ligne peut être ajusté, mais il n'a pas été implémenté sur la ligne de commande ...
Un jour, si vous en avez envie, vous pourrez peut-être l'ajuster également sur la ligne de commande.
J'utilise Anaconda Power Shell comme terminal pour Visual Studio Code et je l'exécute dans l'environnement de base d'Anaconda. (Même si vous n'utilisez pas Visual Studio Code ou Anaconda, si vous pouvez utiliser python sur un shell tel qu'une invite de commande ou Windows Power Shell, cela fonctionnera probablement.)
Placez json_conv.py dans un répertoire qui se trouve dans le chemin du module afin qu'il puisse être importé en tant que module.
Si vous ne savez pas comment passer le pass, l'article suivant vous sera utile. Comment définir des variables d'environnement telles que la température et le chemin dans Windows 10|un service|Ingénieur professionnel [Construction de l'environnement Python] Explication des variables d'environnement! | WEBCAMP NAVI
Je crée un répertoire pour rassembler mes propres scripts, et j'ajoute le chemin du répertoire de mes propres scripts à PYTHONPATH et je l'utilise.
Par exemple, supposons que vous écriviez ce code.
test.html
<ul class="_list">
<li class="_listItem">
<div class="_listWrapper">
<img class="_listImg" src="" alt="">
<div class="_listContent">
</div>
</div>
</li>
</ul>
Ouvrez un shell, utilisez la commande cd pour accéder au répertoire contenant test.html, puis exécutez la commande suivante:
(Python -m
est une commande pour exécuter un module Python en tant que script. Notez que json_conv n'est pas suivi de .py car il s'agit d'un nom de module.)
python -m json_conv test.html
Ensuite, l'écran suivant sera affiché dans le shell.
Destination: test.html
Document converti
-----------------------------------------
"<ul class=\"_list\">",
"\t<li class=\"_listItem\">",
"\t\t<div class=\"_listWrapper\">",
"\t\t\t<img class=\"_listImg\" src=\"\" alt=\"\">",
"\t\t\t<div class=\"_listContent\">",
"\t\t\t\t",
"\t\t\t</div>",
"\t\t</div>",
"\t</li>",
"</ul>"
-----------------------------------------
Voulez-vous vraiment l'enregistrer dans le fichier spécifié? (Écrasé s'il existe déjà
Sera)(y/n)
Si vous entrez «n» ici, le programme se terminera sans rien faire.
Si vous entrez y
, test.html sera écrasé et ressemblera à ceci:
test.html
"<ul class=\"_list\">",
"\t<li class=\"_listItem\">",
"\t\t<div class=\"_listWrapper\">",
"\t\t\t<img class=\"_listImg\" src=\"\" alt=\"\">",
"\t\t\t<div class=\"_listContent\">",
"\t\t\t\t",
"\t\t\t</div>",
"\t\t</div>",
"\t</li>",
"</ul>"
En effectuant une conversion de cette manière, vous pouvez l'utiliser comme valeur JSON simplement en copiant et en collant, de sorte que vous pouvez facilement créer un extrait d'utilisateur VS Code.
"Print to console": {
"prefix": "log",
"body": [
"console.log('$1');",
"$2"
],
"description": "Log output to console"
}
Il est écrit au début de html.json, ↑ La partie corps de ce modèle est la précédente Si vous le remplacez par le code converti, puis réécrivez le préfixe et la description ...
html.json
"list with image": {
"prefix": "listImg",
"body": [
"<ul class=\"_list\">",
"\t<li class=\"_listItem\">",
"\t\t<div class=\"_listWrapper\">",
"\t\t\t<img class=\"_listImg\" src=\"\" alt=\"\">",
"\t\t\t<div class=\"_listContent\">",
"\t\t\t\t",
"\t\t\t</div>",
"\t\t</div>",
"\t</li>",
"</ul>" ],
"description": "a list, each of its row has an image and texts."
}
C'est tout ce qu'on peut en dire.
De cette façon, vous pouvez facilement créer un extrait d'utilisateur en exécutant une commande sans écrire ou échapper manuellement "
.
Si vous souhaitez créer un extrait de code utilisateur, vous pouvez le créer en créant un fichier approprié, en y écrivant du code et en exécutant cette commande.
Cette fois, j'ai introduit un script python pour convertir le code écrit pour JSON. Je l'ai fait pour moi, donc je suis désolé si quelque chose ne va pas.
Cette fois, je l'ai fait pour JSON,
for line in file:
replaced_line = line.replace('\"', '\\\"') #"" Dans le document"""\"Remplacé par
replaced_line = replaced_line.replace("\t", "\\t") #Symbole d'onglet d'entrée d'onglet(\t)Remplacer par
replaced_line = replaced_line.replace('\n', '\",\n') #Juste avant le saut de ligne(=Fin de ligne)À "",Insérer
processed_line = '\t' * n_tab + '\"' + replaced_line #Au début de la ligne(n_tab)Onglets et ""Insérer (n dans l'argument)_Si l'onglet n'est pas spécifié, 3 onglets seront insérés)
processed_txt += processed_line #Ajouter des lignes traitées à la chaîne de sortie
processed_txt += "\"" #La toute fin du document(=\Fin de ligne sans n)À """Ajouter
Si vous réécrivez ceci, qui traite en fait la phrase, vous pouvez l'utiliser pour d'autres conversions.
Un jour, nous pourrons créer une version plus polyvalente.
Recommended Posts