【问题标题】:Python: Error saving output into csv file?Python:将输出保存到 csv 文件时出错?
【发布时间】:2016-02-22 08:32:49
【问题描述】:

我只在使用 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 Excel 打开的 csv 文件中的所需输出(填充 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”被视为单个实体。因此只有 3 个实体显示在 Excel 中。

【问题讨论】:

  • 我看不出你的输出有什么问题。你期望得到什么?
  • 输出没问题。只是当用 MS Excel 打开时,答案是 3 列而不是 9 列。我想把它放在 Excel 的 9 列中。
  • 但是您显示的输出有三列,所以 Excel 中有三列也就不足为奇了。怎么会有更多?
  • 我可以添加什么来拆分它们吗?
  • 你不应该创建ccsv 库会为你做这件事,即只需要csv_writer.writerow(result)

标签: python csv file-io save delimiter


【解决方案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)

【讨论】:

    猜你喜欢
    • 2015-08-07
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 2019-03-02
    • 2022-11-25
    • 1970-01-01
    相关资源
    最近更新 更多