Вы можете просто заполнить пробелами, используя str.format ().
def draw_padded_string(s, width, align="left"):
if align == "left":
return "{s: <{width}}".format(s=s, width=width)
elif align == "center":
return s.center(width, ' ')
elif align == "right":
return "{s: >{width}}".format(s=s, width=width)
В этом случае s - это строка, а width - вся ширина вашего столбца.
Youопределит это где-то в вашем коде, возможно, при импорте, просто чтобы убрать его с вашего пути, но до тех пор, пока оно определено до того, как вы начнете вызывать операторы print.Это также немного изменило бы ваш блок печати:
width = 13
headers = ["Wind Speed", "Old Formula", "New Formula", "Difference"]
print_headers = []
for header in headers:
print_headers.append(draw_padded_string(header, width))
print("".join(print_headers))
print()
for row in entries:
print_row = []
for data in row:
print_row.append(draw_padded_string(data, width))
print("".join(print_row))
Что я сделал:
- установил ширину на 13 (ваш самый широкий столбец сейчас равен 11)
- создал списки каждой строки для печати
- применил нашу функцию к каждому элементу списка
- распечатать список как одну строку, используя
"".join(list)
- , измененное сиспользуя собственное целочисленное отслеживание, используя
i
и j
, и вместо этого позвольте python итерировать по вашим строкам и столбцам для вас
Что вы можете сделать по-другому:
- Используйте понимание списков для создания ваших списков (вместо
for item in list
- Настройте ширину столбца на основе фактического максимального списка, как показано ниже
column_length = max([len(word) for word in list_of_words])