Запись списков разного размера в csv в столбцах в Python

Мне нужно написать списки, которые различаются по длине CSV-файлу в столбцах.

В настоящее время у меня есть:

d=lists writer = csv.writer(fl) for values in zip(*d): writer.writerow(values) 

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

2 Solutions collect form web for “Запись списков разного размера в csv в столбцах в Python”

Код ниже для Python 3. Если вы используете Python 2, импортируйте izip_longest вместо zip_longest.

 import csv from itertools import zip_longest d = [[2,3,4,8],[5,6]] with open("file.csv","w+") as f: writer = csv.writer(f) for values in zip_longest(*d): writer.writerow(values) 

Результат:

 2,5 3,6 4, 8, 

Нет никакого «аккуратного» способа написать его, поскольку, как вы сказали, zip усекает до длины самого короткого итерабельного.

Вероятно, самым простым способом было бы просто поместить с None или пустые строки (не зная, что поведение writow имеет значения None):

 maxlen = max([len(member) for member in d]) [member.extend([""] * (maxlen - len(member))) for member in d] for values in zip(*d): ... 

Кроме того, вы можете просто построить каждую строку внутри цикла for вместо использования zip , что было бы более эффективным, но намного более длинным.

EDIT: исправленный пример

Python - лучший язык программирования в мире.