Erweiterte Print-Funktion

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
ihPyP
User
Beiträge: 58
Registriert: Samstag 4. September 2010, 23:06

Hallo,

ich benötige Hilfe, um eine erweiterte "print"-Funkion zu schreiben.
Das Ziel ist der Funktion, ich nenne Sie hier einmal print2, einen Text zu übergeben, welcher in ein bestimmtes Format eingebaut wird.

Definiton:
print(leftC, Text, fillC, rightC, maxNumOfChars=80)

Beispiel:
print("#","", "#", "#")
print(">","Dieser Text ist kürzer als 80 Zeichen", "#", " ")

Ergebnis:
##############################################
> Dieser Text ist kürzer als 80 Zeichen #

- Die Funktion print2 findet also heraus, wie lang der Text der Zeichen X=(len(leftC) + len(Text) + len(rightC)) und ersetzt die verbleibenden Zeichen mit dem füllbuchstaben fillC.
- Toll wäre es auch noch, wenn beim überschreiten der erlaubten Zeilenlänge der String ebenfalls umgebrochen werden würde.

Vielen Dank bereits im Voraus.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Und wofür genau brauchst Du jetzt Hilfe?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
ihPyP
User
Beiträge: 58
Registriert: Samstag 4. September 2010, 23:06

Ich weiß nicht, wie ich den "Freiraum" füllen kann. Ich vermute, dass dies über "format" funktioniert. Aber ich finde kein gutes Beispiel, welches mir Beispiel ein String-Array mit X Leerzeichen oder Rauten erzeugt.
BlackJack

Code: Alles auswählen

In [47]: '#' * 23
Out[47]: '#######################'

In [48]: '#' * 42
Out[48]: '##########################################'
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Suchst du ljust?

Code: Alles auswählen

In [1]: s = 'dieser string ist kürzer als 80 zeichen'

In [2]: s.ljust(80, '#')
Out[2]: 'dieser string ist kürzer als 80 zeichen#########################################'

In [3]: len(s.ljust(80, '#'))
Out[3]: 80
the more they change the more they stay the same
ihPyP
User
Beiträge: 58
Registriert: Samstag 4. September 2010, 23:06

Hallo,

ja, das funktioniert schon ganz gut. Jetzt möchte ich gerne auch Tabulatoren in meinem Eingabestring verwenden.
Beispiel:
s = "Hier kommen gleich Tabulatoren.\tUnd so geht es weiter.\t\t!!!"

Ich möchte auch diesen String wieder auf 80 Zeichen "eweitern". Das heißt:
1. Am Zeilenende Leerzeichen anfügen
2. Die Leerzeichen am Zeilenende sollen die "Leerzeichen", welche durch die Tabulatoren entstehen berücksichtigen.

Wie sollte ich damit am besten verfahren? Wenn man die Länge von s abfragt, dann kriegt man nicht die Länge, welche der String auf dem Bildschirm verbraucht; durch die Tabulatoren....
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

ihPyP hat geschrieben:Jetzt möchte ich gerne auch Tabulatoren in meinem Eingabestring verwenden.
Beispiel:
s = "Hier kommen gleich Tabulatoren.\tUnd so geht es weiter.\t\t!!!"
s.expandtabs()
ihPyP
User
Beiträge: 58
Registriert: Samstag 4. September 2010, 23:06

Vielen Dank.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Zumindest sofern man ausgeht das Tabsize 8 ist. Wollt grad in der Doku nachschauen wie es die Tabsize rausfindet, aber das ist ganz einfach nämlich garnicht, es impliziert einfach 8 Spaces = 1 Tab.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten