2016-02-22 2 views
1

Я понял эту ошибку только при открытии с помощью MS Excel, но это нормально, когда вы открываете с помощью Notepad ++. Значения не отображаются в соответствующих столбцах при открытии с помощью Excel. У меня есть следующий код, который помогает мне делать умножение только в соответствии со значением 1 в файле binary.csv и выдает значения, исключая все значения 0 в файле binary.csv. Может кто-нибудь мне помочь?Python: ошибка сохранения вывода в файл csv?

binary.csv

0,1,0,0,1,0,1,0,0 
1,0,0,0,0,1,0,1,0 
0,0,1,0,1,0,1,0,0 

real.csv

0.1,0.2,0.4,0.1,0.5,0.5,0.3,0.6,0.3 

Код

import csv 

with open('real.csv', 'rb') as csvfile: 
    for row in csv.reader(csvfile, delimiter=','): 
     reals = row 

with open('binary.csv', 'rb') as csvfile: 
    pwreader = csv.reader(csvfile, delimiter=',') 

    with open('onehothot.csv','wb') as testfile: 
     csv_writer=csv.writer(testfile) 
     for row in pwreader: 
      result = [] 

      for i,b in enumerate(row): 
       if b == '1' : 
        result.append(reals[i]) 

      c= ",".join(result) 
      print(c) 
      csv_writer.writerow([c]) 

Выход в CSV файл открыт с помощью Notepad ++

0.2,0.5,0.3 
0.1,0.5,0.6 
0.4,0.5,0.3 

Желаемая выход в CSV файл открыт с помощью MS Excel (в 3 строк и 3 столбцов, заполненных)

0.2 0.5 0.3 
0.1 0.5 0.6 
0.4 0.5 0.3 

Фактический выход CSV файл я открываю с помощью MS Excel находится в 3 строках и заполняется 1 столбец, потому что «0,2 0,5 0,3» рассматривается как единый объект. Поэтому в Excel отображаются только 3 объекта.

+0

Я не вижу ничего плохого с выходом , Что вы ожидаете получить? – barny

+0

Выход прекрасен. Просто при открытии с помощью MS Excel ответ состоит из 3 столбцов вместо 9 столбцов. Я хотел бы иметь его в 9 столбцах Excel. – Xiong89

+0

Но вывод, который вы показываете, имеет три столбца, поэтому неудивительно, что в Excel есть три столбца. Как могло быть больше? – barny

ответ

1

Там нет необходимости, чтобы попытаться создать каждый столбец, вступив с , как csv библиотеки будет делать это для вас, а его кода следующим образом:

import csv 

with open('real.csv', 'rb') as csvfile: 
    for row in csv.reader(csvfile, delimiter=','): 
     reals = row 

with open('binary.csv', 'rb') as csvfile: 
    pwreader = csv.reader(csvfile, delimiter=',') 

    with open('onehothot.csv','wb') as testfile: 
     csv_writer=csv.writer(testfile) 
     for row in pwreader: 
      result = [] 

      for i,b in enumerate(row): 
       if b == '1' : 
        result.append(reals[i]) 

      csv_writer.writerow(result) 
Смежные вопросы