Тогда так в лоб не получится решить. Дело в том, что csv.writer умеет писать только строки. поэтому нужно будет их сформировать. А сформировать их можно, только прочитав исходный файл целиком, поскольку последняя строка входного файла будет у нас последним столбцом выходного, если я правильно понял. То есть пока все не прочитаем не сумеем записать ничего, поскольку не будет ни одной полной строки.
Значит делаем так. Вместо записи в выходной файл в цикле чтения нужно сформировать список списков, в который писать то, что мы прочитали в виде столбцов.
Для пущей понятности вот иллюстрация:
Вначале наш результат пустой.
Допустим мы прочитали из файла строку и разбили ее на 4 подстроки.
Добавить в результат нужно таким образом, чтобы получилось вот это:
[['подстрока1.1'],
['подстрока1.2'],
[ 'подстрока1.3'],
['подстрока1.4']
]
После чтения следующей строки и записи ее в результат получим вот это:
[['подстрока1.1', 'подстрока2.1'],
['подстрока1.2', 'подстрока2.2'],
[ 'подстрока1.3', 'подстрока2.3'],
['подстрока1.4', 'подстрока2.4']
]
И т.д.
Таким образом после чтения всех строк мы получим список списков подстрок, каждый из которых можно тупо писать в выходной csv, поскольку он является строкой.
Понятно ли?