2016-12-12 6 views
1

У меня есть следующиеСоздание table.png из списков

  • списка: var = [n, x ,Y, y, E];
  • где: n, x, Y, y, E - это списки такой же длины;

Как выводить информацию в var в таблицу изображения таким образом, что информация для n отображается в одном столбце?

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

ответ

0

Давайте создадим небольшой пример, используя csv модуль с ; в качестве разделителя, чтобы Excel правильно открыл его по умолчанию.

Я определил 3 списка одинаковой длины и построил список этих списков.

Хитрость заключается в том, чтобы перенести строки в столбцах с помощью zip и оператора * расширить аргументы как подсписки, так zip чередует каждый элемент каждого подсписок, строительство нового кортежа.

Затем просто позвоните csv.writer.writerows на результирующий итератор, чтобы получить данные в столбцах.

Код:

import csv 

n=list(range(1,10)) 
X=list(range(11,20)) 
E=list(range(21,30)) 

l = [n,X,E] 

with open("foo.csv","w",newline="") as f: 
# with open("foo.csv","wb") as f: # use this instead for legacy Python 2.x 
    cr = csv.writer(f, delimiter=";") 
    cr.writerows(zip(*l)) 

результат (в виде текста):

1;11;21 
2;12;22 
3;13;23 
4;14;24 
5;15;25 
6;16;26 
7;17;27 
8;18;28 
9;19;29 

Откройте его в Excel, вы получите 3 аккуратные столбцы.

EDIT: если после вашего комментария, вы числа с плавающей точкой, и вы хотите, чтобы ограничить количество цифр, заменить csv.writerows линии:

cr.writerows((["{:.3}".format(float(x)) for x in row] for row in zip(*l))) 

(каждые данные преобразуются в float и отображаются 3 десятичных знака)

+0

Большое спасибо. У меня есть только один вопрос. my x имеет вид [0,0, 0,2, 0,4 ....]. Однако в файле csv я получаю 0.40000000000000002. Вы знаете, как я могу это исправить? –

+0

по умолчанию для float для преобразования строк. см. мое редактирование. –

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