Давайте создадим небольшой пример, используя 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 десятичных знака)
Большое спасибо. У меня есть только один вопрос. my x имеет вид [0,0, 0,2, 0,4 ....]. Однако в файле csv я получаю 0.40000000000000002. Вы знаете, как я могу это исправить? –
по умолчанию для float для преобразования строк. см. мое редактирование. –