2015-08-26 64 views
1
  1. 列表項

讀取矩陣從文件成Python(即矩陣沒有頁眉/行名稱) 轉換它的EdgeList都 寫有值EdgeList都提交,使EdgeList都,並與值寫入EdgeList都提交蟒蛇

  • 列表項

inpu t.txt

name a b c d 
    a 0 0 0 0 
    b 0 0 1 1 
    c 0 1 0 1 
    d 0 1 1 0 

ouptput.txt

a b 0 
a c 0 
a d 0 
b c 1 
b d 1 
c d 1 

進入這裏

adj=open("input.txt","r+") 
    for row,line in enumerate(adj.split('\n')): 
    for col,val in enumerate(line.split(' ')): 
     if val =="1" or val =="0": 
      print row, col, val 
adj.close() 
+0

1.read從文件的基質成Python(即矩陣具有頁眉/行名稱) 2.將其轉換爲邊界列表 3.將值寫入邊界列表至文件 – Tursunjan

回答

-1

你應該打開這兩個文件中的代碼使用共同聲明with,使語句本身處理關閉文件您。

然後這是錯誤的 - adj.split('\n'),文件沒有拆分,你可以直接迭代它,刪除.split('\n')部分。然後,而不是打印,寫入其他文件。實施例 -

with open("input.txt","r") as adj, open('output.txt','w') as out: 
    header = next(adj).split() 
    for line in adj: 
     yval = line.split()[0] 
     for col,val in enumerate(line.split()): 
      if (val =="1" or val =="0") and col != 0: 
       out.write("{0} {1} {2}\n".format(yval, header[col], val)) 

實施例/演示 -

>>> with open("input.txt","r") as adj, open('output.txt','w') as out: 
...  header = next(adj).split() 
...  for line in adj: 
...   yval = line.split()[0] 
...   for col,val in enumerate(line.split()): 
...    if (val =="1" or val =="0") and col != 0: 
...     out.write("{0} {1} {2}\n".format(yval, header[col], val)) 

輸出在Output,txt -

a a 0 
a b 0 
a c 0 
a d 0 
b a 0 
b b 0 
b c 1 
b d 1 
c a 0 
c b 1 
c c 0 
c d 1 
d a 0 
d b 1 
d c 1 
d d 0 
+0

你的exzmple可以解決py問題,但不是更好的方法。如果頭部行和列有「str」,e,g:頭部行:事件「PRDM2,:chr1-14127643-14355202_AMPLIFICATION」「SDC3,:chr1-31372734 -31372788_AMPLIFICATION「 第一列:TCGA-04-1530 TCGA-13-1496 – Tursunjan

+0

你是什麼意思?你是否想考慮邊界列表的頭條和第一列? –

+0

是的,我想考慮邊界列表的首行和第一列 – Tursunjan