2014-01-15 5 views
2

В настоящее время я пытаюсь отобразить информацию из таблицы в консольную строку. Я попытался форматировать данные, но он, похоже, не хочет меняться.Python 3.3 - Информация о форматировании в таблице

Код для форматирования:

print("{:>21}".format("Student Table")) #Title 
    print("{:>5} {:>8} {:>8}".format(col_names[0], col_names[1], col_names[2])) #Column Names 
    for row in rows:  
     print("{:^8} {:<50} {:<8}".format(*row)) #information formatting 

Данные затем отображает следующее:

 Student Table 
StudentID  Name  Year 
    1  Dan            13  
    2  Laura            12  
    3  Joe            13  
    4  David            13  
    5  Jake            13 

Я пытаюсь изменить информацию имени и он выровнен с левой стороны, так что все линии с заголовком столбца.

Я пытаюсь изменить среднее число на форматирование информации, но информация не меняется!

Пожалуйста, согласитесь с тем, как я могу выстроить информацию.

+0

Имеются ли в вашем распоряжении пробелы? – Keith

+0

@Keith Ни один из данных не имеет пробелов –

ответ

2

Формат тела не соответствует формату заголовка. StudentID - 9 символов. Поэтому следует увеличить длину первого столбца.

print("{:>9} {:<50} {:<8}".format(*col_names)) 
for row in rows:  
    print("{:^9} {:<50} {:>8}".format(*row)) 
+0

ладно спасибо! –

0

В дополнение к falsetru «ы ответ, обратите внимание, что вы можете иметь очень динамическую строку форматирования; таким образом, влево или вправо и ширину столбцов могут быть установлены в зависимости от значений:

>>> '{0:{1}>{2}}'.format('some', '*', 10) 
'******some' 
>>> '{0:{1}{2}{3}}'.format('some', '*', '<', 10) 
'some******' 
>>> '{0:{1}{2}{3}}'.format('some', '*', '>', 10) 
'******some' 

Еще одна хорошая идея заключается в том, чтобы определить строку форматирования один раз и использовать его везде возможно.

Смежные вопросы