создать csv-файл из списка кортежей [duplicate]

Проблема в том, что вы возвращаете указатель на буфер, выделенный в стеке. Как только функция вернется, этот буфер уже недействителен.

4
задан John Machin 31 December 2011 в 14:38
поделиться

2 ответа

Введите все строки сразу:

writer.writerows(A)

вместо

writer.writerow(A)

Файл newfile.csv теперь выглядит следующим образом:

Max,3, M
bob,5,M
jane,6,F

Кроме того, добавьте () в свою последнюю строку, это вызов функции: result.close().

Если вы находитесь на Python 2.6 или новее, вы можете использовать эту форму:

import csv
A = (('Max', 3, 'M'),('bob', 5, 'M'),('jane', 6, 'F'))
with open('newfile.csv', 'wb') as result:
    writer = csv.writer(result, dialect='excel')
    writer.writerows(A)
10
ответ дан eumiro 18 August 2018 в 21:14
поделиться
  • 1
    Эквивалентно, for row in A: writer.writerow(A). Но поскольку вы создаете A, вы можете использовать writerows. – Katriel 31 December 2011 в 12:41
  • 2
    +1 Я делал это как csv.writer(f).writerows([x for x in a]) Я ухожу в rtfm :-) – T I 31 December 2011 в 12:45

Не уверен, что я полностью понимаю вас, но я думаю, что это поможет:

    print >>f, "\n".join([",".join(x) for x in A]);
0
ответ дан prongs 18 August 2018 в 21:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: