Как выровнить данные по столбцам?

нужно получить 5 ровных столбцов

['Worldwide', '951,901', '135.09', '195,929', '47,522']
['Norway', '5,007', '939.6', '0', '45']
['United States', '216,362', '661.48', '8,878', '5,133']
['Italy', '110,574', '1,750.55', '16,847', '13,155']
['Spain', '110,238', '2,224.77', '26,743', '10,003']
['China', '81,589', '59.41', '76,408', '3,318']
['Germany', '78,199', '952.06', '11,722', '932']
['France', '56,325', '833.63', '7,882', '4,025']
['Iran', '47,593', '587.62', '15,473', '3,036']
['United Kingdom', '29,474', '454.19', '0', '2,352']
['Switzerland', '17,785', '2,621.22', '4,013', '488']
['Turkey', '15,679', '187.31', '333', '277']
['Belgium', '15,348', '1,489.05', '2,495', '1,011']
['Netherlands', '13,614', '836.03', '0', '1,173']
['Austria', '10,859', '1,385.79', '1,436', '146']

нужно получить 5 ровных столбцов


Ответы (2 шт):

Автор решения: strawdog

Попробуйте поэкспериментировать с форматированием.

txt = [['Norway', '5,007', '939.6', '0', '45'],
      ['United States', '216,362', '661.48', '8,878', '5,133'],
      ['Italy', '110,574', '1,750.55', '16,847', '13,155'],
      ['Spain', '110,238', '2,224.77', '26,743', '10,003'],
      ['China', '81,589', '59.41', '76,408', '3,318']]
for x in txt:
    print("{:<20}{:>10}{:>10}{:>10}{:>10}".format(*x))

выведет:

Norway                   5,007     939.6         0        45
United States          216,362    661.48     8,878     5,133
Italy                  110,574  1,750.55    16,847    13,155
Spain                  110,238  2,224.77    26,743    10,003
China                   81,589     59.41    76,408     3,318
→ Ссылка
Автор решения: vadim vaduxa

Чтобы не указывать фиксированную длину столбца в "{:<20}{:>10}{:>10}{:>10}{:>10}" - автоопределение длины колонок

txt = [['Norway StatesStates StatesSt', '5,007', '939.6', '0', '45'],
      ['United States States States', '216,362', '661.48', '8,878', '5,133'],
      ['Italy', '110,574', '1,750.55', '16,847', '13,155'],
      ['Spain', '110,238', '2,224.77', '26,743', '10,003'],
      ['China', '81,589', '59.41', '76,408', '3,318']]

mlen = (max(map(len, col)) for col in zip(*txt))  # 27, 7, 8, 6, 6
s = f"{{:<{next(mlen)}}} {' '.join(f'{{:>{ml}}}' for ml in mlen)}"  # "{:<27} {:>8}{:>9}{:>7}{:>7}"
for x in txt:
    print(s.format(*x))

out:

Norway StatesStates StatesSt   5,007    939.6      0     45
United States States States  216,362   661.48  8,878  5,133
Italy                        110,574 1,750.55 16,847 13,155
Spain                        110,238 2,224.77 26,743 10,003
China                         81,589    59.41 76,408  3,318
→ Ссылка