i commited last idk when , so updates
This commit is contained in:
38
csv/vornamen/print_tables.py
Normal file
38
csv/vornamen/print_tables.py
Normal file
@@ -0,0 +1,38 @@
|
||||
class tables:
|
||||
@staticmethod
|
||||
def print_table(data: dict, sum_row: dict = None):
|
||||
"""
|
||||
print a formatted table from a dict
|
||||
:param data: dict with column names as keys and list of column values
|
||||
:param sum_row: optional dict with the same keys for a sum/total row
|
||||
"""
|
||||
# Berechne die maximale Breite jeder Spalte (Header vs. Inhalte vs. Summe)
|
||||
col_widths = {}
|
||||
for k, v in data.items():
|
||||
max_content_len = max((len(str(name)) for name in v), default=0)
|
||||
header_len = len(k)
|
||||
sum_len = len(str(sum_row[k])) if sum_row and k in sum_row else 0
|
||||
col_widths[k] = max(max_content_len, header_len, sum_len)
|
||||
|
||||
# Header drucken
|
||||
header = " | ".join(k.ljust(col_widths[k]) for k in data.keys())
|
||||
separator = "-+-".join("-" * col_widths[k] for k in data.keys())
|
||||
print(header)
|
||||
print(separator)
|
||||
|
||||
# Zeilen drucken
|
||||
max_len = max(len(v) for v in data.values())
|
||||
for i in range(max_len):
|
||||
row = []
|
||||
for key in data.keys():
|
||||
if i < len(data[key]):
|
||||
row.append(str(data[key][i]).ljust(col_widths[key]))
|
||||
else:
|
||||
row.append(" " * col_widths[key])
|
||||
print(" | ".join(row))
|
||||
|
||||
# Summe drucken, falls <20>bergeben
|
||||
if sum_row:
|
||||
print(separator)
|
||||
sum_line = " | ".join(str(sum_row[k]).ljust(col_widths[k]) for k in data.keys())
|
||||
print(sum_line)
|
||||
Reference in New Issue
Block a user