[PYTHON] [Jinja2] Änderung des Zeilenumbruchs abhängig von der Position des Bindestrichs

Einführung

Python: 3.7.4 jinja2: 2.7.2

Beim Schreiben einer for / if-Anweisung mit der jinja2-Vorlage ändert sich die Art der Zeilenumbrüche in Abhängigkeit vom Vorhandensein oder Fehlen von Bindestrichen und der Position. Ich verliere mich immer, wenn ich eine for-Anweisung schreibe, also werde ich sie zusammenfassen. Wie schreibe ich, um die folgende Ausgabe zu erhalten?

Ausgabe


start

apple0
orange0

apple1
orange1

end

Muster 1: Fügen Sie in alles Bindestriche ein

Die folgende Vorlage ist der Standard für diese Zeit. Setzen Sie Bindestriche vor und nach der Start- und Endposition der for-Anweisung.

jinja_test1.j2


start
{%- for i in range(2) -%}
apple{{ i }}
orange{{ i }}
{%- endfor -%}
end

Muster 1: Ausführungsergebnis

Es gibt nur einen Zeilenumbruch zwischen Apfel und Orange. Es scheint, dass der in der for-Anweisung geschriebene Inhalt die Zeile ohne Erlaubnis unterbricht.

Ausgabe


startapple0
orange0apple1
orange1end

Muster 2: Löschen Sie den Bindestrich vor der Startposition der for-Anweisung

jinja_test2.j2


start
{% for i in range(2) -%}
apple{{ i }}
orange{{ i }}
{%- endfor -%}
end

Muster 2: Ausführungsergebnis

Es gab eine Pause zwischen start und apple0. Vor der Startposition der for-Anweisung tritt am Anfang der for-Anweisung nur einmal ein Zeilenumbruch auf.

Ausgabe


start
apple0
orange0apple1
orange1end

Muster 3: Löschen Sie den Bindestrich nach der Startposition der for-Anweisung

jinja_test3.j2


start
{%- for i in range(2) %}
apple{{ i }}
orange{{ i }}
{%- endfor -%}
end

Muster 3: Ausführungsergebnis

Vor apple0 und apple1 gibt es einen Zeilenumbruch. Nach der Startposition der for-Anweisung tritt jedes Mal an der Startposition in der for-Anweisung ein Zeilenumbruch auf.

Ausgabe


start
apple0
orange0
apple1
orange1end

Muster 4: Löschen Sie den Bindestrich vor der Endposition des for-Satzes

jinja_test4.j2


start
{%- for i in range(2) -%}
apple{{ i }}
orange{{ i }}
{% endfor -%}
end

Muster 4: Ausführungsergebnis

Nach orange0 und orange1 gibt es jetzt einen Zeilenumbruch. Vor der Endposition der for-Anweisung tritt jedes Mal in der letzten Zeile der for-Anweisung ein Zeilenumbruch auf.

Ausgabe


startapple0
orange0
apple1
orange1
end

Muster 5: Löschen Sie den Bindestrich nach der Endposition der for-Anweisung

jinja_test5.j2


start
{%- for i in range(2) -%}
apple{{ i }}
orange{{ i }}
{%- endfor %}
end

Muster 5: Ausführungsergebnis

Nach orange1 wird jetzt ein Zeilenumbruch eingefügt. Nach der Endposition der for-Anweisung scheint die Zeile beim Verlassen der for-Anweisung nur einmal zu brechen.

Ausgabe


startapple0
orange0apple1
orange1
end

Zusammenfassung

Basierend auf dem bisherigen Inhalt ist es wie folgt.

Position zum Löschen von Bindestrichen Wie man eine Linie bricht
Vor der Startposition der for-Anweisung Nur eine Pause am Anfang der for-Anweisung
hinter der Startposition der for-Anweisung Unterbrechen Sie jedes Mal am Anfang der Schleife
Vor der Endposition der for-Anweisung Unterbrechen Sie jedes Mal am Ende der Schleife
hinter der Endposition der for-Anweisung Nur eine Pause am Ende der for-Anweisung

Das heißt, um die erste Ausgabe zu erhalten ・ Zwei Zeilenumbrüche zwischen start und apple0 → Keine Bindestriche vor und nach der Startposition der for-Anweisung erforderlich ・ Die Linie zwischen orange1 und Ende muss zweimal unterbrochen werden. → Keine Bindestriche vor und nach der Endposition des for-Satzes erforderlich "Alle Bindestriche löschen" ist also die richtige Antwort und lautet wie folgt.

jinja_test6.j2


start
{% for i in range(2) %}
apple{{ i }}
orange{{ i }}
{% endfor %}
end

Ausgabe


start

apple0
orange0

apple1
orange1

end

Recommended Posts

[Jinja2] Änderung des Zeilenumbruchs abhängig von der Position des Bindestrichs
Machen Sie es sichtbar, indem Sie die von journalctrl abgeschnittene Linie durchbrechen
Unterschied in den Ergebnissen abhängig vom Argument von multiprocess.Process
rsync Das Verhalten ändert sich abhängig vom Vorhandensein oder Fehlen des Schrägstrichs der Kopierquelle
[Einführung] Fügen Sie Zeilenumbrüche in Python 3 ein
Abrufen, Testen und Senden von Testfällen im AtCoder-Wettbewerb über die Befehlszeile
Lesen Sie die Datei mit Python und löschen Sie die Zeilenumbrüche [Hinweise zum Lesen der Datei]
Erhalten Sie weiterhin RSS in der Befehlszeile
Lesen Sie die Datei Zeile für Zeile mit Python
Lesen Sie die Datei Zeile für Zeile mit Python
Rückblick auf 2016 in der Crystal-Sprache
Ändern Sie die Zeilenumbruchposition der automatisch formatierten iPython-Ausgabe
Sie suchen in der Befehlszeile nach commandlinefu
[Python] Lesen Sie die angegebene Zeile in der Datei
[Linux] Unterschied in den Zeitinformationen in Abhängigkeit von der Uhr-ID der Funktion clock_gettime ()
Wie sich die Referenz des Python-Arrays ändert, hängt vom Vorhandensein oder Fehlen von Indizes ab
Wenn verzweigen, hängt davon ab, ob die Liste ein bestimmtes Element enthält
Ändern Sie in Python das Verhalten der Methode je nach Aufruf