Запись списков разного размера в 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: исправленный пример

  • Поток CSV-файла в Django
  • Столбцы CSV для массивов в Python
  • pandas parse csv с левыми и правыми символами цитат
  • wordcloud для файла csv в python
  • Запись дополнительного столбца с заголовком
  • Использование argparse для преобразования csv в xml в python
  • Python: CSV пишется по столбцу, а не по строке
  • Разбор csv-файла и совокупных значений в python
  • Ошибка памяти с использованием openpyxl и больших данных
  • Python: Сплит CSV-файл в соответствии с первым символом первого столбца
  • Найдите один столбец для определенного значения в файле CSV и верните целую строку
  • Python - лучший язык программирования в мире.