Запись списка Python в один столбец CSV

У меня есть список чисел, которые я хочу поместить в один столбец в файле .csv. В приведенном ниже коде значения записываются в одну строку. Как я могу изменить код, чтобы Python записывал каждое значение в отдельной строке? Спасибо.

        with open('returns.csv', 'wb') as f:
            writer = csv.writer(f)
            writer.writerow(daily_returns)

person Community    schedule 20.11.2011    source источник
comment
ISTM CSV-файл с единственным столбцом не нуждается в csv.writer. Просто используйте f.writelines([ret + '\n' for ret in daily_returns])   -  person Raymond Hettinger    schedule 20.11.2011
comment
@RaymondHettinger: Возможно, это надумано, но значения ret могут содержать '\n' символов или разделителей, которые необходимо указывать в кавычках.   -  person unutbu    schedule 20.11.2011


Ответы (4)


В Python3 откройте файл в режиме w:

with open('returns.csv', 'w') as f:
    writer = csv.writer(f)
    for val in daily_returns:
        writer.writerow([val])

В Python2.6 + откройте файл в режиме wb:

with open('returns.csv', 'wb') as f:
    writer = csv.writer(f)
    for val in daily_returns:
        writer.writerow([val])
person unutbu    schedule 20.11.2011
comment
Я думаю, что открытый конкурс должен быть только open('returns.csv', 'w') as f: - person Casey; 20.11.2011
comment
Спасибо. Я пробовал тот же код, но моя последняя строка читала writer.writerow (val), и я получил сообщение об ошибке Ожидаемая последовательность. Я не понимал, что мне нужны скобки. - person ; 20.11.2011
comment
@Casey: Я был бы склонен согласиться, но, поскольку OP написал это, я предполагаю, что он знает, что делает. - person unutbu; 20.11.2011
comment
@unutbu, Кейси: см. stackoverflow.com/questions/1170214/ ... OP, очевидно, прочитал документы :) - person John Machin; 20.11.2011

Альтернативное решение. Предполагая, что daily_returns - это имя списка, который вы хотите записать в виде столбца в файле CSV, следующий код должен работать:

with open('return.csv','w') as f:
    writer = csv.writer(f)
    writer.writerows(zip(daily_returns))
person Alankar Jain    schedule 23.12.2015
comment
Это было единственное решение, которое сработало для меня в Python 3.x. - person camelCase; 29.03.2019

Только для записи:

Я использую Python 3.2, и мне удалось заставить работать только следующее

with open('returns','w')as f:
    writer=csv.writer(f,lineterminator='\n')
    for val in returns:
        writer.writerow([val])
person Oregano    schedule 17.01.2014
comment
В Python 3 вы должны открывать файлы с помощью параметра newline='', как описано в документы. - person DSM; 18.01.2014

Для написания одного столбца я бы рекомендовал избегать команд csv и просто использовать простой Python с метод str.join ():

    with open('returns.csv', 'wb') as f:
        f.write("\n".join(daily_returns))
person spinup    schedule 23.03.2018
comment
Прекрасно работает! Я использовал «w» вместо «wb». Спасибо! - person Palak Bansal; 26.04.2019