Форум сайта python.su
У меня несколько array (созданных с помощью команды zeros(()) из numpy), что надо записать в файл этого формата. При использовании obj.writerow(Tablica) все строка таблицы пищется в одну ячейку, а мне надо чтобы каждое значение было в отдельной ячейке. Как этого можно добится?
Насколько я понимаю, вместо Tablica = должно передаваться (,,)?
Если да, то как так сделать?
Офлайн
Не могу воспроизвести вашу ситуацию:
zeros = numpy.zeros((10,10))
fh = open('/tmp/out.csv', 'w')
writer = csv.writer(fh)
writer.writerows(zeros)
fh.close()
# In [13]: cat /tmp/out.csv
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
writer.writerow(zeros[0])
writer.writerow(zeros[1,:])
#In [28]: cat /tmp/out.csv
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
Офлайн
И посмотри что получается в итоге в самом файле csv… В первой ячейке каждой стороки забиты ВСЕ значения…
Офлайн
А я что показываю? Не сам файл csv, что ли? Все там нормально - по нулю в каждой ячейке.
Офлайн
У меня после выполнения этго же скрипта - в Excele получается такая же лобуда - все значения строки - в первой ячейки. Мне необходимо, чтобы файл корректно открывался имменно в Excel. (openOffice в Твоем случае, как я понимаю).
Установка диалекта не помогает.
Офлайн
А какой разделитель ячеек для CSV по умолчанию в экселе, такой и должен быть тут.
Как я понял, в разных версиях Экселя он разный
Отредактировано (Дек. 16, 2008 11:41:00)
Офлайн
по идее это должно учитываться при вводе диалекта, так что проблема скорее всего в виде строчек в np.array
Офлайн
У меня для 2007 экселя работает такой вариант (у него разделитель “;”):
import numpy
import csv
zeros = numpy.zeros((10,10))
fh = open('out.csv', 'wb')
writer = csv.writer(fh, delimiter=';')
writer.writerows(zeros)
fh.close()
Офлайн
shiza, спасибо, все заработало. Даже на 2003 Экселе.
Офлайн
BelsenДа нет у меня никаких офисов, я просто на файл посмотрел и увидел, что он нормален.
У меня после выполнения этго же скрипта - в Excele получается такая же лобуда - все значения строки - в первой ячейки. Мне необходимо, чтобы файл корректно открывался имменно в Excel. (openOffice в Твоем случае, как я понимаю).
Офлайн