Seite 1 von 1
tripple Quotes Frage
Verfasst: Sonntag 18. April 2021, 18:44
von Kalysto
Hallo zusammen,
Ich habe eine Frage zu den
und zwar versuche ich nun eine Variable zu erstellen welche diesen Inhalt hat:
Code: Alles auswählen
template = (
"""\
irgend was
zum schauen
so wie das hier....\
"""
)
wenn ich das nun in eine Datei Schreibe werden immer die Leerzeichen mit verwendet:
wie kann ich das umgehen finde hier zu nichts... oder muss man das komplett anders angehen ?
weil das hier möchte ich nicht da es bescheiden aussieht:
Code: Alles auswählen
template = (
"""\
irgend was
zum schauen
so wie das hier....\
"""
)
Danke schon einmal für die Unterstützung!
EDIT:
Habe eine Lösung gefunden:
wäre dies so zu verwenden okay ?
Re: tripple Quotes Frage
Verfasst: Sonntag 18. April 2021, 20:13
von sparrow
Deine Backslash sind nicht escaped.
Ich löse das in der Regel so:
Code: Alles auswählen
template = "\\nirgend was\nzum schauen\n\n\n\nso wie das hier....\"
template = (
"\\\n"irgend was\n"
"zum schauen\n\n\n\n"
"so wie das hier....\\"
)
Re: tripple Quotes Frage
Verfasst: Sonntag 18. April 2021, 20:19
von __blackjack__
@Kalysto: Wenn überhaupt grössere mehrzeilige Zeichenketten, würde ich die am Anfang als Konstanten definieren. Dann kann man das so schreiben:
Code: Alles auswählen
TEMPLATE = """\
irgend was
zum schauen
so wie das hier....
"""
Eingerückt im Code mehr als eine Zeile, aber nicht zu viel, schreibe ich in der Regel als mehrere Zeichenketten die nur durch „whitespace“ getrennt sind:
Code: Alles auswählen
template = (
"irgend was\n"
"zum schauen\n"
"\n"
"\n"
"\n"
"so wie das hier....\n"
)
Das wird vom Compiler zu einer Zeichenkette zusammenfasst, verbraucht also zur Laufzeit keine Rechenzeit. Und man könnte auch alle Zeilen mit führenden Leerzeichen anfangen lassen, was bei `textwrap.detent()` nicht geht.
@sparrow: Zumindest der erste Backslash soll nicht escaped werden, der ist dazu da, damit die erste Zeile des Textes auf einer eigenen Zeile stehen kann und somit im Quelltext im Bezug auf die anderen Zeilen an der ”richtigen” Stelle. Vergleiche:
Code: Alles auswählen
text = """eins
zwei
drei
"""
# vs.
text = """\
eins
zwei
drei
"""
In der ersten Variante ist es einfach(er) das "eins" zu übersehen.
Ob der letzte Backslash im Original das Zeilenendezeichen bei der letzten Zeile verhindern sollte weiss ich nicht. Das habe ich weggelassen weil Zeilen ohne Zeilenendezeichen doof sind und früher oder später Ärger machen.
Re: tripple Quotes Frage
Verfasst: Dienstag 20. April 2021, 14:48
von Kalysto
Hallo zusammen,
Ja, der letzte backslash war bewusst gewählt da daran nichts weiter bearbeitet wird und eine Fertige Datei ist.
zu: `textwrap.detent()`
Da ich eig. am Anfang keine führenden Leerzeichen benötige würde ich dies nun verwenden hatte damit eig. bisher keine Probleme.
Re: tripple Quotes Frage
Verfasst: Dienstag 20. April 2021, 17:05
von __blackjack__
@Kalysto: Das ist ein Trugschluss. Ein Zeilenendezeichen gehört an das Ende *jeder* Zeile. Es gibt zig Werkzeuge die das dort erwarten und die Murks machen wenn das da nicht ist.