2016-08-12 152 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)