2014-03-13 4 views
0

Как видите, первые 4 столбца правильно выравниваются, , но когда я добавляю колонку LOCKED в конце, ее формат очень странный.Как выровнять выходной сигнал в согласованном формате

Вот мой код

show_camera_in_command = "\t".join(camera.split(",,,")[0:-1]) 
    if locked: 
     p_yel(show_camera_in_command+"\t\tLOCKED") 
    else: 
     print(show_camera_in_command) 

Выхода

ответ

0

Проблема возникает из-за того, что ваша колонка с каким-то идентификатором имеет переменную размера. Вам нужно сначала проверить самую длинную строку, а затем, в соответствии с ее размером, добавить соответствующие вкладки.

Вы можете рассчитать количество вкладок (где вкладка равно 8 пробелов) для вставки между идентификатором и заперла с простой формулой:

# Just make a simple relevant sample with different size 
>>> lst = ["a", "aaaa", "aaaaaaaaaaaaaaa"] 
>>> for a in lst: 
...  print "%s\tLOCKED" % a 
... 
a  LOCKED 
aaaa LOCKED 
aaaaaaaaaaaaaaa LOCKED # Here we can see the problem 

>>> max_size = len(lst[-1]) 
>>> for a in lst: 
...  print "%s%sLOCKED" % (a, "\t" * ((max_size - len(a))/8 + 1)) 
... 
a    LOCKED 
aaaa   LOCKED 
aaaaaaaaaaaaaaa LOCKED 

Для простоты, вы можете отделить оператор печати в две инструкции:

nb_tabs = (max_size - len(a))/8 + 1 
print "%s%sLOCKED" % (a, "\t" * nb_tabs) 

Вам нужно, конечно, рассчитать максимальный размер, который может быть сделано путем простой итерации над данными, как size = max([len(x) for x in lst]).

0

Вкладка характер заставляет выход к следующему 'табулятору'. Рассмотрим символ табуляции как 8 пробелов. Поскольку такие данные, как SF8172, составляют 6 символов, frist '\ t' выталкивает вывод в следующую позицию «8 пробелов», а второй - 8 пробелов. Выход, такой как NDB301ND8301, составляет 12 пробелов, поэтому вы уже прошли позицию, когда первая вкладка установила предыдущую выходную строку. Таким образом, вы перемещаете еще одну «табуляцию». Точно так же VASTVVK_Station1 еще длиннее и пропускает таб'таб-стоп ', поэтому он еще дальше на выходной строке.

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

Вы можете использовать формат или рассчитать количество требуемых символов табуляции. такие как

i = (64 - len(field))//8 

теперь выводится с помощью '\ t' * i в спецификации выхода.

+0

Что делать, если я хочу выровнять информацию LOCKED в том же положении? как? любой наконечник – newBike

+0

@poc Используйте формат или подсчитайте количество вкладок, необходимых в зависимости от размера поля вывода, и используйте '\ t' * i, который выдает правильное количество вкладок. – sabbahillel

0

Используйте формат python. Вы можете увидеть пример here.

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