首页 > 解决方案 > 使用单个字符串写入 CSV 每行返回 1 个字符

问题描述

我一直在尝试将数据写入 csv 文件。我一直在将代码从 java 转换为 python,这里是 python 代码:

def resultsToCSVStr(results):
    output = "Episode No.,"

    for run in results:
        output += "Run" + str(run) + "steps,"

    for time in range(len(results[0])):

        output += "\n" + str(time) + ","
        for run in range(len(results)):
            output += "" + str(results[run][time]) + ","

    return output


def resultsToCSVFile(results, experimentName):
    resultsTable = resultsToCSVStr(results)
    #print(resultsTable)

    with open("out/" + experimentName + "/" + experimentName + "_stepsToGoal.csv", mode='w') as out:
        writer = csv.writer(out, delimiter="\n")
        writer.writerows(resultsTable)

预期输出的形式为:

EpisodeNo.,Run0steps,Run1steps,Run2steps,Run3steps,Run4steps,Run5steps,Run6steps,Run7steps,Run8steps,Run9steps,

0,98,100,100,97,100,100,100,100,100,100,

1,14,34,37,40,47,45,29,56,31,31,

2,37,30,12,29,29,20,22,31,29,24,

3,10,10,16,8,16,10,16,8,10,10,

4,16,8,16,8,12,49,8,8,14,14,

但是实际输出是

p

一世

s

d

e

ñ

.

,

R

n

[

以此类推为整个结果。当我打印出结果表时,它会正确地返回它,所以问题出在最后 3 行。当我从第一个函数中删除“\n”时,它仍然输出相同的结果,所以这甚至不是问题的一部分。

非常感谢任何帮助,谢谢!

编辑

我变了:

writer.writerows(resultsTable)

writer.writerow(resultsTable)

而且它改变了输出,它仍然是同样的问题,但输出不再有目瞪口呆了。我不认为这真的改变了任何东西,但认为 id add。

标签: pythoncsv

解决方案


尝试csv.writer(out, delimiter=",")改用 od 分隔符 '\n'。原因分隔符是连续两个单元格之间的符号。您也根本不需要函数 resultsToCSVStr。只需将 resultsTable = resultsToCSVStr(results) 更改为 resultsTable = results。但首先,以这种方式在行上划分结果:

row_len = 3 # Or any row length you want
answer = []
tmp = []
for i, s in enumerate(result[0]):
    tmp.append(s)
    if (i + 1) % row_len == 0:
        answer.append(tmp)
        tmp = []
answer.append(tmp)
result = answer

推荐阅读