Ich studiere derzeit Webproduktion, aber bei der Registrierung eines Benutzerausschnitts bei VS Code war es schwierig, am Anfang und am Ende jeder Zeile doppelte Anführungszeichen einzufügen. Ich habe mein eigenes Python-Skript erstellt, das den Inhalt der Datei in ein Formular konvertiert, das mit JSON einfach zu verwenden ist. (Der Grund, warum es Web ist, aber kein JavaScript, ist, dass ich noch nicht daran gewöhnt bin. Schweiß)
conv steht für Konvertierung
json_conv.py
'''
Ein Skript, das den Text in der Zieldatei so konvertiert, dass er als JSON-Wert verwendet werden kann.
(i)Alle"""Hinter"\\", Und
(ii)Registerkartensymbol für alle Registerkarteneingaben(\\t)Ersetzen mit
(iii)3 Tabulatoren am Anfang jeder Zeile und """, Am Ende der Zeile"",", Und
(iv)Ganz am Ende des Dokuments""Hinzugefügt.
Erste Argumentdatei(input_file)Wird basierend auf konvertiert und das Ergebnis ist die Datei des zweiten Arguments(output_file)Schreiben Sie an.
(output_Wenn keine Datei angegeben ist, geben Sie ein_Datei so wie sie ist überschreiben)
Sie können auch eine Funktion mit demselben Namen wie ein Modul importieren.
(Wie schreibe ich einen Befehl)
> python -m json_conv.py (input_file) (output_file(Irgendein))
'''
def json_conv(input_file, output_file=None, n_tab=3):
'''
Eine Funktion, die den Text in der Zieldatei so konvertiert, dass er als JSON-Wert verwendet werden kann.
(i)Alle"""Hinter"\\", Und
(ii)Registerkartensymbol für alle Registerkarteneingaben(\\t)Ersetzen mit
(iii)Am Anfang jeder Zeile(n_tab)Tab-Eingabe und """, Am Ende der Zeile"",", Und
(iv)Ganz am Ende des Dokuments""Hinzugefügt.
Anzahl der Tabulator-Eingaben, die am Zeilenanfang eingefügt werden sollen(n_tab)Der Standardwert für ist 3.
input_Aus Datei konvertieren und Ergebnis ausgeben_In Datei schreiben.
(output_Wenn keine Datei angegeben ist, geben Sie ein_Datei so wie sie ist überschreiben)
'''
# output_Wenn keine Datei angegeben ist, geben Sie ein_Legen Sie die Datei als Ausgabeziel fest
if output_file is None:
output_file = input_file
with open(input_file, mode="r", encoding="utf-8") as file:
processed_txt = "" #Definieren Sie eine Zeichenfolge für die Ausgabe
for line in file:
replaced_line = line.replace('\"', '\\\"') #"" Im Dokument"""\"Ersetzt mit
replaced_line = replaced_line.replace("\t", "\\t") #Tab-Eingabe-Tab-Symbol(\t)Ersetzen mit
replaced_line = replaced_line.replace('\n', '\",\n') #Kurz vor dem Zeilenumbruch(=Ende der Linie)Zu "",Einfügen
processed_line = '\t' * n_tab + '\"' + replaced_line #Am Anfang der Zeile(n_tab)Tabs und ""Einfügen (n im Argument)_Wenn keine Registerkarte angegeben ist, werden 3 Registerkarten eingefügt.
processed_txt += processed_line #Fügen Sie der Ausgabezeichenfolge verarbeitete Zeilen hinzu
processed_txt += "\"" #Das Ende des Dokuments(=\Zeilenende ohne n)Zu """Hinzufügen
print("\n Ziel speichern: " + output_file + "\n")
print("Konvertiertes Dokument")
print("-----------------------------------------\n")
print(processed_txt)
print("\n-----------------------------------------\n")
while True:
#Sie werden gefragt, ob Sie wirklich in die angegebene Datei schreiben möchten
answer = input("Möchten Sie es wirklich in der angegebenen Datei speichern? (Wenn es bereits existiert, wird es überschrieben)(y/n) ")
#Wenn y ausgewählt ist, wird ausgegeben_Schreiben Sie das konvertierte Dokument in die in der Datei angegebene Datei(Standardmäßig eingeben_Datei überschreiben)
if answer == 'y':
with open(output_file, mode="w", encoding="utf-8") as file:
file.write(processed_txt)
break
#Wenn n ausgewählt ist, beenden Sie das Programm ohne zu schreiben
if answer == 'n':
break
#Wenn Sie etwas anderes eingeben, werden Sie erneut gefragt
else:
continue
#Verarbeitung bei Ausführung in der Befehlszeile
if __name__ == "__main__":
import sys
try:
selected_input = sys.argv[1] #Geben Sie das erste Argument der Befehlszeile als Konvertierungsquelldatei an
#Löst einen Fehler aus, wenn keine Befehlszeilenargumente übergeben werden
except IndexError:
raise TypeError("Keine Eingabedatei angegeben")
try:
selected_output = sys.argv[2] #Geben Sie das zweite Argument der Befehlszeile als Speicherziel der konvertierten Datei an
json_conv(selected_input, selected_output) #Funktion zur Konvertierung ausführen
except IndexError:
json_conv(selected_input) #Wenn Sie das zweite Argument nicht angeben, übergeben Sie nur das erste Argument und führen Sie die Funktion aus(Überschreiben Sie die Quelldatei)
\ t
Der Vorgang wird der Reihe nach ausgeführt.
In JSON wurde eine Fehlermeldung angezeigt, wenn aufgrund einer Registerkarte ein Leerzeichen vorhanden war. Daher habe ich die Registerkarte durch "\ t" ersetzt. Der Grund für das Entkommen von "" zuerst ist, dass andernfalls das "", das jede Zeile einschließt, falsch ist.
Um die Anzeige in docstring korrekt zu machen, wenn die Funktion von vscode bewegt wird, wird sie durch Hinzufügen von "" nach "" maskiert.
Ich habe es als Funktion definiert, damit es auch als Modul verwendet werden kann. In der Funktion kann durch Angabe von "n_tab" die Anzahl der am Anfang der Zeile eingefügten Tabulator-Leerzeichen angepasst werden, sie wurde jedoch nicht in der Befehlszeile implementiert ... Wenn Sie Lust dazu haben, können Sie es eines Tages möglicherweise auch in der Befehlszeile anpassen.
Ich verwende Anaconda Power Shell als Terminal für Visual Studio Code und führe es in der Basisumgebung von Anaconda aus. (Auch wenn Sie Visual Studio Code oder Anaconda nicht verwenden, funktioniert es wahrscheinlich, wenn Sie Python für eine Shell wie eine Eingabeaufforderung oder eine Windows Power Shell verwenden können.)
Platzieren Sie json_conv.py in einem Verzeichnis im Modulpfad, damit es als Modul importiert werden kann.
Wenn Sie nicht wissen, wie Sie den Pass weitergeben sollen, ist der folgende Artikel hilfreich. So legen Sie Umgebungsvariablen wie Temp und Path in Windows 10 fest|Bedienung|Professioneller Ingenieur [Python-Umgebungskonstruktion] Erklärung der Umgebungsvariablen! | WEBCAMP NAVI
Ich erstelle ein Verzeichnis, um meine eigenen Skripte zusammenzustellen, füge den Pfad des Verzeichnisses für meine eigenen Skripte zu PYTHONPATH hinzu und verwende ihn.
Angenommen, Sie schreiben diesen Code.
test.html
<ul class="_list">
<li class="_listItem">
<div class="_listWrapper">
<img class="_listImg" src="" alt="">
<div class="_listContent">
</div>
</div>
</li>
</ul>
Öffnen Sie eine Shell, wechseln Sie mit dem Befehl cd in das Verzeichnis mit test.html und führen Sie den folgenden Befehl aus:
(Python -m
ist ein Befehl zum Ausführen eines Python-Moduls als Skript. Beachten Sie, dass auf json_conv nicht .py folgt, da es sich um einen Modulnamen handelt.)
python -m json_conv test.html
Anschließend wird der folgende Bildschirm in der Shell angezeigt.
Ziel: test.html
Konvertiertes Dokument
-----------------------------------------
"<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>"
-----------------------------------------
Möchten Sie es wirklich in der angegebenen Datei speichern? (Überschrieben, falls vorhanden
Wird sein)(y/n)
Wenn Sie hier n
eingeben, wird das Programm beendet, ohne etwas zu tun.
Wenn Sie "y" eingeben, wird test.html überschrieben und sieht folgendermaßen aus:
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>"
Wenn Sie auf diese Weise konvertieren, können Sie es als JSON-Wert verwenden, indem Sie es einfach kopieren und einfügen, sodass Sie auf einfache Weise ein VS Code-Benutzer-Snippet erstellen können.
"Print to console": {
"prefix": "log",
"body": [
"console.log('$1');",
"$2"
],
"description": "Log output to console"
}
Es steht am Anfang von html.json. ↑ Der Hauptteil dieser Vorlage ist der vorherige Wenn Sie es durch den konvertierten Code ersetzen und dann das Präfix und die Beschreibung neu schreiben ...
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."
}
Dies ist abgeschlossen. Auf diese Weise können Sie einfach ein Benutzer-Snippet erstellen, indem Sie einen Befehl ausführen, ohne manuell "" zu schreiben oder zu maskieren.
Wenn Sie ein Benutzer-Snippet erstellen möchten, können Sie es erstellen, indem Sie eine entsprechende Datei erstellen, Code darin schreiben und diesen Befehl ausführen.
Dieses Mal habe ich ein Python-Skript zum Konvertieren des geschriebenen Codes für JSON eingeführt. Ich habe es im Grunde genommen für mich selbst gemacht, also tut es mir leid, wenn etwas schief geht.
Diesmal habe ich es für JSON gemacht,
for line in file:
replaced_line = line.replace('\"', '\\\"') #"" Im Dokument"""\"Ersetzt mit
replaced_line = replaced_line.replace("\t", "\\t") #Tab-Eingabe-Tab-Symbol(\t)Ersetzen mit
replaced_line = replaced_line.replace('\n', '\",\n') #Kurz vor dem Zeilenumbruch(=Ende der Linie)Zu "",Einfügen
processed_line = '\t' * n_tab + '\"' + replaced_line #Am Anfang der Zeile(n_tab)Tabs und ""Einfügen (n im Argument)_Wenn keine Registerkarte angegeben ist, werden 3 Registerkarten eingefügt.
processed_txt += processed_line #Fügen Sie der Ausgabezeichenfolge verarbeitete Zeilen hinzu
processed_txt += "\"" #Das Ende des Dokuments(=\Zeilenende ohne n)Zu """Hinzufügen
Wenn Sie dies neu schreiben, wodurch der Satz tatsächlich verarbeitet wird, können Sie ihn für andere Konvertierungen verwenden.
Eines Tages werden wir vielleicht eine vielseitigere Version machen.
Recommended Posts