我想在列表中的元素之间添加换行符(python)

时间:2017-10-26 09:10:33

标签: python

def writeConfusionMatrix(self, outFile):
    print("Write a confusion matrix to outFile; elements in the matrix can be frequencies (you don't need to normalize)")

    output = []

    file = open(outFile, 'w+')

    matrix = defaultdict(lambda: defaultdict(int))

    for s in range(len(self.goldenTags)):
        for w in range(len(self.goldenTags[s])):
            matrix[self.goldenTags[s][w].tag][self.myTags[s][w].tag] += 1

    row_ids = sorted(matrix.keys())
    col_ids = sorted(set(k for v in matrix.values() for k in v.keys()))

    output.append(col_ids)

    for r in row_ids:
        output.append([r] + [matrix[r].get(c, 0) for c in col_ids])
    #matKeys = matrix.keys()
    #df = DataFrame(matrix).T.fillna(0)
    #output = '\n'.join(output)
    print(output)
    file.write(str(output))

此函数创建一个混淆矩阵并将其写入新文件。

看起来像是

current matrix

它没有空格的嵌套列表,但我希望它看起来像:

new matrix

在元素之间添加新行。

我尝试过添加

之类的东西
output = '\n'.join(output)

之前

file.write(str(output))

但给了我一个

sequence item 0: expected str instance, list found

错误。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

尝试将此内容写入您的文件:

output = '\n'.join([','.join(map(str,item)) for item in output])

您正在使用'\n'.join()加入列表,您还需要将这些列表转换为字符串。

答案 1 :(得分:0)

只需逐行打印字符串:

for line in output:
    print line # or file.write(line)

或创建一个使用新行分隔符的新字符串,然后将其写入:

output = '\n'.join(str(line) for line in output)
print line # or file.write(line)