2016-08-12 150 views
0

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

[['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 

你们怎么知道该怎么做? 感谢

+1

告诉我们什么都有你试过 – cuongnv23

+0

file = open(“file.txt”,“w”) write.file(“\ n”.join([“”。join(str(item))for re]]) – user3925736

回答

0

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

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 
+0

这段代码和我的一样有问题。如果我在Excel中打开生成的文本文件,所有列将在同一列 – user3925736

+0

@ user3925736这不是代码的问题,这是正确的,这是您在Excel中导入的方式的问题,您应该指定''作为分隔符。另外,你没有在你的问题中提到有关excel的任何信息:) – BPL

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)