Seite 1 von 1

Erweiterte Print-Funktion

Verfasst: Sonntag 20. November 2011, 16:18
von ihPyP
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.

Re: Erweiterte Print-Funktion

Verfasst: Sonntag 20. November 2011, 16:23
von Hyperion
Und wofür genau brauchst Du jetzt Hilfe?

Re: Erweiterte Print-Funktion

Verfasst: Sonntag 20. November 2011, 16:25
von ihPyP
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.

Re: Erweiterte Print-Funktion

Verfasst: Sonntag 20. November 2011, 16:49
von BlackJack

Code: Alles auswählen

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

In [48]: '#' * 42
Out[48]: '##########################################'

Re: Erweiterte Print-Funktion

Verfasst: Sonntag 20. November 2011, 17:25
von Dav1d
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

Re: Erweiterte Print-Funktion

Verfasst: Mittwoch 23. November 2011, 09:51
von ihPyP
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....

Re: Erweiterte Print-Funktion

Verfasst: Mittwoch 23. November 2011, 11:19
von snafu
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()

Re: Erweiterte Print-Funktion

Verfasst: Mittwoch 23. November 2011, 18:31
von ihPyP
Vielen Dank.

Re: Erweiterte Print-Funktion

Verfasst: Freitag 25. November 2011, 19:40
von Leonidas
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.