2016-12-05 2 views
1

Я хочу, чтобы достичь такого рода продукцию с строкой форматированием:выравнивая с струной форматирования

GBP......0.8639......0.8399 

Я попытался, используя следующий код (я обозначаю валюту и е [0] и е [1] купить и значение надувательства):

"{i:.<10}{e[0]:.^6}{e[1]:.>6}".format(i=i, e=e) 

но приведенный выше код не совпадает второй номер справа, но это только добавляет его за первый номер, например:

GBP.......0.86390.8399 

Как я могу исправить это?

ответ

1

Как обобщенное решение:

  • Используйте этот формат строка, если вы хотите правого столбца, центральный и левый столбец быть выровнен вправо, по центру и слева соответственно:

    >>> '{0:.<10}{1:.^10}{2:.>10}'.format('GBP', 0.8639, 0.8399) 
    'GBP.........0.8639......0.8399' 
    
    # Another example 
    >>> '{0:.<10}{1:.^10}{2:.>10}'.format('GBPTEST', 0.90, 0.8) 
    'GBPTEST......0.9...........0.8' 
    
  • ИЛИ, эта строка формата, если вы хотите все столбцы, кроме самого правого столбца, выровнены справа:

    >>> '{0:.<10}{1:.>10}{2:.>10}'.format('GBP', 0.8639, 0.8399) 
    'GBP...........0.8639....0.8399' 
    
    # Another example 
    >>> '{0:.<10}{1:.>10}{2:.>10}'.format('GBPTEST', 0.90, 0.8) 
    'GBPTEST..........0.9.......0.8' 
    
  • OR, этот формат строка, если вы хотите всех столбцов должны быть выровнены влево:

    >>> '{0:.<10}{1:.<10}{2:<10}'.format('GBP', 0.8639, 0.8399) 
    'GBP.......0.8639....0.8399 ' 
    
    # Another example 
    >>> '{0:.<10}{1:.<10}{2:<10}'.format('GBPTEST', 0.90, 0.8) 
    'GBPTEST...0.9.......0.8  ' 
    

Изменить значение 10 для каждых пар на основе на размер столбца, который вам нужен.


Ниже будет формат строку, специфичную для вида Params, как упомянуто в вопросе:

>>> '{i:.<10}{e[0]:.^10}{e[1]:.>10}'.format(i='GBP', e=(0.8639, 0.8399)) 
'GBP.........0.8639......0.8399' 

# Another example 
>>> '{i:.<10}{e[0]:.^10}{e[1]:.>10}'.format(i='GBPTEST', e=(0.90, 0.8)) 
'GBPTEST......0.9...........0.8' 
0

Увеличьте последнее число от 6 до 12.

"{i:.<10}{e[0]:.^6}{e[1]:.>12}".format(i=i, e=e) 

Это дает вам

GBP.......0.8639......0.8399 
0

Ваши последние две спецификации формата имеют ширину 6, а сами значения - шесть цифр, поэтому нет никаких символов заполнения. Если вы хотите, чтобы e[0] находились между i и e[1] с шестью точками с обеих сторон, постройте вторую спецификацию формата на основе длины из e [0] - и не указывайте ширину для двух других.

>>> i = 'GPB' 
>>> e = (0.8639, 0.8399) 
>>> n = len(str(e[0])) 
>>> s = '{i:}{e[0]:.^' + str(12+n) + '}{e[1]:}' 
>>> s 
'{i:}{e[0]:.^18}{e[1]:}' 
>>> s.format(i = i, e = e) 
'GPB......0.8639......0.8399' 
>>> 

или

>>> i = 'GPB' 
>>> e = (0.8639, 0.8399) 
>>> s1 = '{{i:}}{{e[0]:.^{n:}}}{{e[1]:}}' 
>>> n = len(str(e[0])) + 12 
>>> s = s1.format(n=n) 
>>> s 
'{i:}{e[0]:.^18}{e[1]:}' 
>>> s.format(i = i, e = e) 
'GPB......0.8639......0.8399' 
>>> 
Смежные вопросы