Hallo,
ich bin relativ neu in Python.
Ich versuche gerade Ergebnisse in einer Art Tabelle zusammenfassend in ein File zu schreiben.
Also die Tabelle sollte 6 Spalten haben.
Etwa so:
Status Parameter Value1 Value2 line1 line2
Mein Problem ist dass Formatierungszeichen wie "%10s" % parameter
leider zu verschobenen einträgen führen da ja die Parameter und die Werte unterschiedlich lang sind...
Kann mir jemand helfen wie ich das einfachheit halber realisieren kann? Ich wünschte es ginge so dass exakt unter dem Buchstaben P von Parameter die ganzen Parameter Namen anfangen...und auch unter V von Value1 die Werte dann anfangen..
Danke euch
Tabellen Formatierung
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Du kannst dir ja Funktionen schreiben, die die einzelnen Strings "ausdehnen", indem sie Whitespaces einfügen. Das wäre eine Möglichkeit. Eine andere wäre die Nutzung von Tabs.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Spontan fällt mir ein, den längsten wert einer Spalte suchen, und die anderen werte dieser Spalte mit hilfe von string.rjust() auf diese Länge mit Leerzeichen erweitern.
MfG
Andreas
MfG
Andreas
hier mal eine fünf Minuten Lösung:
mfG
Andreas
Code: Alles auswählen
Spalte_1 = ["Status", "843854054950", "3473439438"]
def Find_maxLaenge(Spalte):
max_laenge = 0
for Wert in Spalte:
laenge = len(Wert)
if laenge > max_laenge:
max_laenge = laenge
return max_laenge
just = Find_maxLaenge(Spalte_1)
for Value in Spalte_1:
print Value.ljust(just) + "|"
Andreas
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi,
wohl eher str.ljust(n)
Du kannst aber auch bei der Stringformatierung mit % einfach einen Negativen Wert nehmen, dann wird der String linksbündig ausgegeben
Gruß
Dookie
wohl eher str.ljust(n)
Du kannst aber auch bei der Stringformatierung mit % einfach einen Negativen Wert nehmen, dann wird der String linksbündig ausgegeben
Code: Alles auswählen
text1 = "Hallo"
text2 = "Welt"
fmt = "%-20s%-20s[ENDE]"
print fmt % (text1, text2)
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
Finden der maximalen Länge etwas kürzer:
Code: Alles auswählen
def find_max_length(iterable):
return reduce(max, map(len, iterable), 0)
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
oder mit LC statt map:
keine Chance für den max sich noch zu verstecken
@BlackJack: das reduce brauchts ned, max sucht aus einer beliebigen Reihe das Maximum raus, nicht nur aus einem Paar.
Gruß
Dookie
Code: Alles auswählen
def find_max(iteralble):
return max([len(x) for x in iterable])
@BlackJack: das reduce brauchts ned, max sucht aus einer beliebigen Reihe das Maximum raus, nicht nur aus einem Paar.
Gruß
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
Ja Öha...
ein mal wech und dann schon so viel Hilfe....Danke euch allen. Werd mich gleich mal ransetzen und schauen das ichs hinformatier ;o)
Danke
ein mal wech und dann schon so viel Hilfe....Danke euch allen. Werd mich gleich mal ransetzen und schauen das ichs hinformatier ;o)
Danke
Fast beliebige Sequenz -- diese hier funktioniert nicht: []. Bei dem reduce() hatte ich als Anfangswert deshalb eine 0 angegeben.Dookie hat geschrieben:@BlackJack: das reduce brauchts ned, max sucht aus einer beliebigen Reihe das Maximum raus, nicht nur aus einem Paar.
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
[] hat aber auch kein Maximum, auch nicht 0. Ausserdem wird bei reduce für jedes Element der Liste max aufgerufen während ohne reduce das ganze innerhalb der max-Funktion läuft. Was sicher um einiges performanter ist.
Ich würd halt vor dem Aufruf von find_max testen ob iterable leer ist oder das ganze in einen try: ... except ValueError: ... Block einschließen.
Gruß
Dookie
Ich würd halt vor dem Aufruf von find_max testen ob iterable leer ist oder das ganze in einen try: ... except ValueError: ... Block einschließen.
Gruß
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]