2016-09-04 3 views
3

Я хотел бы отображать две таблицы рядом с другими, используя табуляцию.Таблицы - Как каскадные таблицы

Мой подход:

test_table1 = tabulate([['Alice', 24], ['Bob', 19]]) 
test_table2 = tabulate([['Hans', 45], ['John', 38]]) 
master_headers = ["table1", "table2"] 
master_table = tabulate([[test_table1, test_table2]], 
         master_headers, tablefmt="simple") 
print(master_table) 

Но это приводит в обеих таблицах отображается в столбце табл.1.

См: enter image description here

Вопрос: Как я могу каскадом таблицы в питона, предпочтительно с использованием пластинчатый (или подобная библиотека)?

Заранее благодарен!

Muff

ответ

1

Я действительно не знаю, если это лучший выбор, который вы получите, но это то, что я придумал

test_table1 = str(tabulate([['Alice', 24], ['Bob', 19]])).splitlines() 
test_table2 = str(tabulate([['Hans', 45], ['John', 38]])).splitlines() 
master_headers = ["table1", "table2"] 
master_table = tabulate([list(item) for item in zip(test_table1,test_table2)], 
         master_headers, tablefmt="simple") 
print(master_table) 

Выход:

table1  table2 
--------- -------- 
----- -- ---- -- 
Alice 24 Hans 45 
Bob 19 John 38 
----- -- ---- -- 

Пояснение:

Целью было передать массив s trings к master_table «ы tabulate, как это было сделано с test_table1 и test_table2

С .splitlines()

>>>str(tabulate([['Alice', 24], ['Bob', 19]])) 
>>>'----- --\nAlice 24\nBob 19\n----- --' 
>>>str(tabulate([['Alice', 24], ['Bob', 19]])).splitlines() 
>>>['----- --', 'Alice 24', 'Bob 19', '----- --'] 

Таким образом, мы имели ['----- --', 'Alice 24', 'Bob 19', '----- --'] и ['---- --', 'Hans 45', 'John 38', '---- --'], но мы не можем передать им, что путь , поскольку выход будет довольно странным:

table1  table2 
--------- --------- --------- --------- 
----- -- Alice 24 Bob 19 ----- -- 
---- -- Hans 45 John 38 ---- -- 

Так нам нужно zip эти списки, и преобразовывать значения в list, потому что zip возвратного list из tuple объектов, то, что произошло здесь:

>>>[list(item) for item in zip(test_table1,test_table2)] 
>>>[['----- --', '---- --'], 
    ['Alice 24', 'Hans 45'], 
    ['Bob 19', 'John 38'], 
    ['----- --', '---- --']] 

И именно так, как tabulate легко будет получить данные и поставить, как вы желательно.

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