【发布时间】: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 中有三列也就不足为奇了。怎么会有更多?
-
我可以添加什么来拆分它们吗?
-
你不应该创建
c,csv库会为你做这件事,即只需要csv_writer.writerow(result)。
标签: python csv file-io save delimiter