Seite 1 von 1
					
				Ausgabe in der Konsole als Tabelle formatieren
				Verfasst: Freitag 21. August 2009, 18:47
				von burli
				Wie kann ich denn eine Ausgabe in der Konsole wie eine Tabelle formatieren?
Sowas in der Art
Code: Alles auswählen
==========================
|Wert1|   Wert2  | Wert3 |
--------------------------
|  1  | 12345678 | 0.32  |
|  2  |    12345 | 0.3   |
|  3  |      156 | 0.21  |
==========================
Also zentriert, rechtsbündig oder linksbündig, je nach Art der Spalte
 
			 
			
					
				
				Verfasst: Freitag 21. August 2009, 19:21
				von EyDu
				Du hast die Suchfunktion nicht benutzt, oder? 

 
			 
			
					
				
				Verfasst: Freitag 21. August 2009, 19:26
				von burli
				wenn du mir sagst, welche Stichworte ich verwenden soll? Die Stichwörter, die mir so einfallen, haben nicht geholfen
			 
			
					
				
				Verfasst: Freitag 21. August 2009, 21:11
				von burli
				Ich hab mir jetzt mit Tabs geholfen. Schön ist das aber noch nicht.
Xmega Baudrate Calculator 
			 
			
					
				
				Verfasst: Freitag 21. August 2009, 21:23
				von EyDu
				"tabelle konsole"
"tabelle ausgeben"
			 
			
					
				
				Verfasst: Samstag 22. August 2009, 01:15
				von str1442
				http://paste.pocoo.org/show/135627/
Ergibt:
Code: Alles auswählen
|a|c|b|
=======
|1|a|5|
|2|b|6|
|3|c|7|
| |d|8|
| |e|9|
| |f| |
| |g| |
| |h| |
| |i| |
| |j| |
=======
Zweiter Tisch:
|Lange Ueberschrift|Wert1|
==========================
|               Ein|    0|
|              paar|    1|
|         Eintraege|    2|
|                  |    3|
==========================
new_display_entry kannst du entsprechend manipulieren um Linksbündigkeit (Meh, seitdem ich zum ersten Mal Computern und Word begegnet bin kann ich das Wort nicht mehr ab, obwohl ich vorher sicher nicht oft drauf stieß) oder anderes zu erreichen, du könntest dir die Funktionen auch zusammen mit dem table übergeben lassen.
 
			 
			
					
				
				Verfasst: Samstag 22. August 2009, 09:48
				von burli
				Hi, vielen Danke. Funktioniert echt super. Gibt nur ein Problem. Die Spalten werden nicht in der Reihenfolge ausgegeben, wie sie angelegt werden. Sieht man auch an dem Beispiel. a, b, c sollte es sein, a, c, b wird ausgegeben. 
Hab noch keine Idee, wie man das lösen könnte.
			 
			
					
				
				Verfasst: Samstag 22. August 2009, 10:10
				von HWK
				In Dicts ist die Reihenfolge nicht garantiert. Du müsstest column_names_in_order entsprechend sortieren. Oder Du verwendest statt eines Dicts eine Liste aus Tupeln. Dann müsstest Du aber den Code umfangreicher verändern.
MfG
HWK
			 
			
					
				
				Verfasst: Samstag 22. August 2009, 11:00
				von burli
				HWK hat geschrieben:In Dicts ist die Reihenfolge nicht garantiert.
Stimmt. Naja, ich lass es erstmal so. Danke für die Tipps.
 
			 
			
					
				
				Verfasst: Samstag 22. August 2009, 12:32
				von sma
				Code: Alles auswählen
def print_tablular(rows, alignments, heading=True):
    values = [[str(v) for v in row] for row in rows]
    widths = [max(len(row[i]) for row in values) for i in range(len(rows[0]))]
    def align(s, w, a): return {'l': s.ljust, 'r': s.rjust, 'c': s.center}[a](w)
    def print_line(c): print c * (sum(widths) + 3 * len(widths) + 1)
    print_line("=")
    for row in values:
        if heading and len(values) > 1 and row == values[1]: print_line("-")
        print "| %s |" % " | ".join(align(s, w, a) for s, w, a in zip(row, widths, alignments))
    print_line("=")
    
print_tablular([
    ["Wert1", "Wert2", "Wert3"],
    [1, 12345678, 0.32],
    [2, 12345, 0.3],
    [3, 156, 0.21],
], 'crl')
Stefan
 
			 
			
					
				
				Verfasst: Samstag 22. August 2009, 13:23
				von derdon
				Es gibt das Paket 
texttable im pypi.
 
			 
			
					
				
				Verfasst: Samstag 22. August 2009, 14:02
				von lunar
				Allerdings nur für GPL-Programme …
			 
			
					
				
				Verfasst: Samstag 22. August 2009, 19:42
				von theliquidwave
				
			 
			
					
				
				Verfasst: Samstag 22. August 2009, 20:20
				von burli
				It's never too late 
Aber ich schau mir mal texttable an, GPL hin oder her. Ist eh nur ein kleines Tool
 
			 
			
					
				
				Verfasst: Samstag 22. August 2009, 20:49
				von EyDu
				@Chrisber:
- Die "create"-Funktion ist überflüssig, da kann man auch gleich "PyTable" aufrufen. Wenn du unbedingt eine extra Funktion willst, dann reicht auch ein "create = PyTable"
- Du solltest dir PEP 8 bezüglich der Methodennamen durchlesen
- Listen haben eine "extend"-Methode, damit sparst du eine Menge in "addRows".
- "addRows" sollte "addRow" aufrufen und nicht selbst anhängen.
- "show" sollte besser "__str__" heißen.
- Deine while-Schleifen kannst du alle durch for-Schleifen ersetzen!
- Wenn du einen Index beim Iterieren brauchst, dann benutze "enumerate". Hier kannst du aber wunderbar "zip" verwenden.
- Schau dir mal die "join"-Methode von Strings an.
- Du schreibst zwei identische Schleifen für das Zusammensetzen einer Zeile. Das solltest du entweder in eine Funktion auslagern oder geschickt zusammenfassen. Doppelter Code ist immer schlecht.
- Zeilen 30 bis 43 kann man wohl durch die "max"-Funktion zusammenfassen.
			 
			
					
				
				Verfasst: Samstag 22. August 2009, 22:10
				von theliquidwave
				Huch, so viel Kritik 

Danke erst einmal dafür!
Viele Tipps die ich noch nicht kannte. Werde mich morgen mal ransetzen und eine verbesserte Version erstellen 
Was PEP8 betrifft, dem stehe ich kritisch gegenüber. Ich habe meinen eigenen "Stil" entwickelt der in fast allen Programmiersprachen und Scriptsprachen gleich ist - und das soll auch so bleiben 
~ Chris
 
			 
			
					
				
				Verfasst: Samstag 22. August 2009, 22:29
				von EyDu
				Chrisber hat geschrieben:Was PEP8 betrifft, dem stehe ich kritisch gegenüber. Ich habe meinen eigenen "Stil" entwickelt der in fast allen Programmiersprachen und Scriptsprachen gleich ist - und das soll auch so bleiben 

 
Wenn du den Code nur für dich schreibst und kein anderer ihn so sehen bekommt, dann kannst du natürlich schreiben wie du möchtest. Es ist aber schon sinnvoll sich an die Vorschläge der Sprache zu halten, da die Entwickler sich natürlich dabei etwas gedacht haben. Besonders wenn du deinen Code präsentierst ist es natürlich sinnvoll sich an einen Styleguide zu halten. Damit hilfst du anderen deinen Code leichter zu verstehen.
 
			 
			
					
				
				Verfasst: Sonntag 23. August 2009, 11:18
				von Leonidas
				Chrisber hat geschrieben:Was PEP8 betrifft, dem stehe ich kritisch gegenüber. Ich habe meinen eigenen "Stil" entwickelt der in fast allen Programmiersprachen und Scriptsprachen gleich ist - und das soll auch so bleiben 

 
Sprich dein Stil irritiert die Programmierer anderer Sprachen gleichermaßen weil du dich auch da nicht an Konventionen hälst? Also ich sehe da nix gutes daran.
 
			 
			
					
				
				Verfasst: Sonntag 23. August 2009, 11:58
				von lunar
				@Chrisber:  Es kommt halt allgemein nicht gut an, wenn man auf dem 
eigenen Stil beharrt, obwohl man Quelltext für 
andere Programmierer schreibt 
