dedent funktioniert nicht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Nahuta
User
Beiträge: 6
Registriert: Samstag 18. Juni 2022, 00:33

Hallo zusammen,

ich bin noch ein Neuling in Python.

Ich habe folgendes Problem. Ich möchte Text über mehrere Zeilen schreiben, das aber gern leserlich im Code sehen. Dedent sah dafür ideal aus.
Ich schrieb also

Code: Alles auswählen

from textwrap import dedent
print(dedent("""Eines Morgens wachst Du auf und alles ist anders.
           Du wurdest aus Deinem Universum in eine surreale Welt katapultiert."""))
Der Text wird ausgeschmissen, nur auch mit der Einrückung.
Nach allem, was ich lese, habe ich es aber richtig gemacht.
Was mache ich also falsch?
Sirius3
User
Beiträge: 18278
Registriert: Sonntag 21. Oktober 2012, 17:20

Es wird nur die Einrückung entfernt, die alle Zeilen gemeinsam haben. Da die erste Zeile nicht eingerückt ist, passiert aber auch nichts.
Nahuta
User
Beiträge: 6
Registriert: Samstag 18. Juni 2022, 00:33

Großartig! Das war es!
Herzlichen Dank! :)
Benutzeravatar
__blackjack__
User
Beiträge: 14077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Vielleicht ist ja `inspect.cleandoc()` besser geeignet. Oder einfach ein Zeichenkettenliteral pro Zeile mit einem "\n" am Ende.

Code: Alles auswählen

In [984]: print(inspect.cleandoc("""Eines Morgens wachst Du auf und alles ist anders.
     ...:                           Du wurdest aus Deinem Universum in eine surreale Welt katapultiert."""))
Eines Morgens wachst Du auf und alles ist anders.
Du wurdest aus Deinem Universum in eine surreale Welt katapultiert.

In [985]: print(
     ...:     "Eines Morgens wachst Du auf und alles ist anders.\n"
     ...:     "Du wurdest aus Deinem Universum in eine surreale Welt katapultiert."
     ...: )
Eines Morgens wachst Du auf und alles ist anders.
Du wurdest aus Deinem Universum in eine surreale Welt katapultiert.

In [986]: text = (
     ...:     "Eines Morgens wachst Du auf und alles ist anders.\n"
     ...:     "Du wurdest aus Deinem Universum in eine surreale Welt katapultiert."
     ...: )

In [987]: print(text)
Eines Morgens wachst Du auf und alles ist anders.
Du wurdest aus Deinem Universum in eine surreale Welt katapultiert.
Oder, falls das ein Textadventure werden soll, den Text gar nicht in den Quelltext schreiben, sondern in Datendateien. Beispielsweise im YAML-Format.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten