Помогите с Форматом!

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
16
Здрасте))
проблема такая: я сделала код он работает, даже где то есть формат, но как только я хочу у себя в (списке, кортеже, в строке (его имя - eva1)) сделать формат что бы я могла управлять проблема во внутри(списка, кортежа, в строке - eva1) питон выдает ошибку, так как тип можно поставить только одно значение
print('{:>20}'.format(*v))
но так как у меня вроде бы 3 индекса то я ставлю 3 раза "{:>20}". Да если делать в строке то выводит нормально, но если делать в списке как мне надо то выдает ошибку... я пробовала все что угодно, но хз как сделать, да можно сделать пробелы между цифрами знаком \t но я попробовала и как то не понятно все. где то пробел больше где то меньше где то вообще их 2, короче вообще не понятна табуляция(
код такой;

Python:
#тут формат работает нормально
eva = (2019, 2020, 2021)
print('{:>10} {:>1} {:>1}'.format(*eva))

#тут таблица которую мне надо вывести, где есть цифры между ними мне надо с помощью формата сделать пробелы
eva1 = [['USD  - 62.9, 74, 73.7'],
        ['EURO - 69.8, 90,  83'],
        ['YUAN - 8.8, 11.3, 11.6']]
#эта штука дает вывод не строкой а списком, так мне и надо вывести
for v in eva1:
    print('{:>20}'.format(*v))
#сверху где принт, я вывожу один раз {:>20} больше не дает, а мне надо давать управление пробелами между цифрами, ну или ими
print()

#внизу все норм))
eva2 = 'all-time:'
print(eva2.upper())
total = {}
total['USD'] = 70.2
total['EURO'] = 80.9
total['YUAN'] = 10.5

total['ALL-TIME'] = len(eva1)
print('USD -  {}'.format(total['USD']))
print('EURO - {}'.format(total['EURO']))
print('YUAN - {}'.format(total['YUAN']))

ну и желательно что бы даты и цифры были ровными))

Спасибо если поможете))

внизу скрин как желательно ровно можно её сделать, но что бы в самом коже можно было управлять пробелами
 

Вложения

  • питон.png
    питон.png
    22,8 КБ · Просмотры: 2

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
16
Кстате вот код где питон дает вывести 3 раза {:>20} но он в одной строке(( а мне надо списком

Python:
eva1 = 'USD - 62.9, 74, 73.7','EURO - 69.8, 90,  83','YUAN - 8.8, 11.3, 11.6'

print('{:>20} {:>20} {:>20}'.format(*eva1))

print()

eva2 = 'all-time:'
print(eva2.upper())
total = {}
total['USD'] = 70.2
total['EURO'] = 80.9
total['YUAN'] = 10.5

total['ALL-TIME'] = len(eva1)
print('USD -  {}'.format(total['USD']))
print('EURO - {}'.format(total['EURO']))
print('YUAN - {}'.format(total['YUAN']))
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
Что то типа этого:
Python:
eva1 = ['USD  - 62.9, 74, 73.7',
        'EURO - 69.8, 90,  83',
        'YUAN - 8.8, 11.3, 11.6']
for v in eva1:
    data = list(map(str.strip, v.split(',')))
    print(('{:<20}'*len(data)).format(*data))

Код:
USD  - 62.9         74                  73.7
EURO - 69.8         90                  83
YUAN - 8.8          11.3                11.6
 

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
16
Что то типа этого:
Python:
eva1 = ['USD  - 62.9, 74, 73.7',
        'EURO - 69.8, 90,  83',
        'YUAN - 8.8, 11.3, 11.6']
for v in eva1:
    data = list(map(str.strip, v.split(',')))
    print(('{:<20}'*len(data)).format(*data))

Код:
USD  - 62.9         74                  73.7
EURO - 69.8         90                  83
YUAN - 8.8          11.3                11.6
ёжики..
спасибо) а можно разобрать что за что отвечает?
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
Сам по себе формат может указать только отступы до или после элемента, но не внутри уже существующей строки
Вот более подробно расписанный вариант
Python:
for v in eva1:
    data = v.split(',')  # Разделяем строку по запятым
    # data = ['USD  - 62.9', ' 74', ' 73.7']
    data = list(map(str.strip, data))  # У каждого элемента data убираем пробелы по краям
    # data = ['USD  - 62.9', '74', '73.7']
    formatter = '{:<20}'*len(data)  # Создаем строку в которой столько же элементов для форматирования, сколько элементов в data
    # formatter = '{:<20}{:<20}{:<20}'
    print(formatter.format(*data))  # Форматируем строку
 

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
16
Сам по себе формат может указать только отступы до или после элемента, но не внутри уже существующей строки
Вот более подробно расписанный вариант
Python:
for v in eva1:
    data = v.split(',')  # Разделяем строку по запятым
    # data = ['USD  - 62.9', ' 74', ' 73.7']
    data = list(map(str.strip, data))  # У каждого элемента data убираем пробелы по краям
    # data = ['USD  - 62.9', '74', '73.7']
    formatter = '{:<20}'*len(data)  # Создаем строку в которой столько же элементов для форматирования, сколько элементов в data
    # formatter = '{:<20}{:<20}{:<20}'
    print(formatter.format(*data))  # Форматируем строку
Спасибо! вроде понятней стало))
 

Форум IT Специалистов