Python:将输出保存到 csv 文件时出错?

Python: Error saving output into csv file?

只有用MS打开才发现这个错误Excel但是用Notepad++打开就没问题了。当我使用 Excel 打开时,这些值不在相应的列中。我有以下代码可以帮助我仅根据 binary.csv 中的值 1 进行乘法运算,并输出排除 binary.csv 中所有 0 值的值。谁能帮帮我?

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])

使用Notepad++打开csv文件输出

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

使用 MS 打开的 csv 文件中的所需输出 Excel(填充 3 行 3 列)

0.2 0.5 0.3
0.1 0.5 0.6
0.4 0.5 0.3 

我使用 MS Excel 打开的实际 CSV 输出文件是 3 行 1 列,因为“0.2 0.5 0.3”被视为单个实体。因此 Excel.

中只显示了 3 个实体

无需尝试通过连接 , 来创建每一列,因为 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)