将矩阵导出到python中的文本文件

时间:2016-08-12 15:32:26

标签: python file

我在python中有一个列表(矩阵),我想将它导出到一个文本文件。内部列表有3个元素。我的文件将有3列。换句话说,第一列将具有内部列表的第一个元素,第二列将具有内部列表的第二个元素,第三列将具有第三个元素。我试图制作它,但所有元素都在一个列中。 这是一个小例子: 输入:

[['ENSG00000137288.5', 0.16721311, 0.13442624], ['ENSG00000116032.5', 0.094311371, 0.1444611], ['ENSG00000167578.12', 0.062894806, 0.10162043]]

输出(可以是文本文件):

ENSG00000137288.5  0.16721311  0.13442624
ENSG00000116032.5  0.094311371  0.1444611
ENSG00000167578.12  0.062894806  0.10162043
你知道怎么做吗? 感谢

2 个答案:

答案 0 :(得分:0)

不使用numpy,pandas或任何其他外部包的最简单方法是这样的:

data = [
    ['ENSG00000137288.5', 0.16721311, 0.13442624],
    ['ENSG00000116032.5', 0.094311371, 0.1444611],
    ['ENSG00000167578.12', 0.062894806, 0.10162043]
]

# builtin python functions
data_file = "\n".join([" ".join(map(lambda x: str(x),row)) for row in data])
print data_file

答案 1 :(得分:0)

试试csv.writer

import csv
your_data=[['ENSG00000137288.5', 0.16721311, 0.13442624], ['ENSG00000116032.5', 0.094311371, 0.1444611], ['ENSG00000167578.12', 0.062894806, 0.10162043]]
with open('output.txt', 'wb') as csvfile:
    w = csv.writer(csvfile, delimiter=' ')
    for row in your_data:
        w.writerow(row)

您可以指定所需的任何分隔符(逗号,制表符,空格等),矩阵中可以有任意数量的列和行。

如果要在Excel中打开文件,请使用逗号,作为分隔符并将文件名更改为.csv

import csv
your_data=[['ENSG00000137288.5', 0.16721311, 0.13442624], ['ENSG00000116032.5', 0.094311371, 0.1444611], ['ENSG00000167578.12', 0.062894806, 0.10162043]]
with open('output.csv', 'wb') as csvfile:
    w = csv.writer(csvfile, delimiter=',')
    for row in your_data:
        w.writerow(row)

或将tabdialect='excel'一起使用:

import csv
your_data=[['ENSG00000137288.5', 0.16721311, 0.13442624], ['ENSG00000116032.5', 0.094311371, 0.1444611], ['ENSG00000167578.12', 0.062894806, 0.10162043]]
with open('output.xls', 'wb') as csvfile:
    w = csv.writer(csvfile, delimiter='\t', dialect='excel')
    for row in your_data:
        w.writerow(row)