ich stecke bei dem Versuch fest mehrere Listen nacheinander mit print auszugeben, sodaß deren unterschiedlich langen elemente genau untereinander stehen.
also etwa für jede liste:
Code: Alles auswählen
print len(liste)*"%5s" % liste
4b
Code: Alles auswählen
print len(liste)*"%5s" % liste
Code: Alles auswählen
l1 = ["foo", "baar", "baaaz"]
l2 = ["foooo", "bar", "baaz"]
# Länge des größen Eintrags.
m = max(len(i) for i in l1 + l2)
# Listen formatiert ausgeben
for l in (l1, l2):
print " ".join("{0:{1}}".format(i, m) for i in l)
Geht aber auch mit Python < 2.6:4bit hat geschrieben:ah, ich benutze python 2.5, da gibt es die format methode noch nicht (mal updaten).
Code: Alles auswählen
>>> print '\n'.join((' '.join('%*s' % (m, x) for x in l)) for l in (l1, l2))
foo baar baaaz
foooo bar baaz
Code: Alles auswählen
results = list()
results.append(["foo", "baar", "baaaaaaaaaz"])
results.append(["foooo", "bar", "baaz"])
results.append(["fooooooooo", "bar", "baaaaaz"])
col_length = list()
for index, col in enumerate(results[0]):
col_length.append(0)
for row in results:
if len(row[index]) > col_length[index]:
col_length[index] = len(row[index])
print
for row in results:
output = ""
for index, col in enumerate(row):
output = "| ".join((output, col.ljust(col_length[index] + 1)))
output = "".join((output, "|"))
print output
Code: Alles auswählen
results = [
["foo", "baar", "baaaaaaaaaz"],
["foooo", "bar", "baaz"],
["fooooooooo", "bar", "baaaaaz"]
]
lengths = [max(map(len, x)) for x in zip(*results)]
for row in results:
print "| ".join(col.ljust(length+1) for col, length in zip(row, lengths))
Code: Alles auswählen
print "\n".join("| ".join(v.ljust(l+1) for v, l in zip(r, ls)) for r in rs)