2015-09-11 58 views
0

我有一個文本文件,列出矩陣中的數據如製表符。下面顯示了2個案例2x2矩陣的數據。在Python中將(多行)數據轉換爲單行數據

% Cases e11 e12 e21 e22 
    1.100000000000000E6 -2.442126570242587E-1 3.206453099773649E-2 
          7.623990950478551E-2 -4.055318707521479E-1 

    1.200000000000000E6 -2.546137875169113E-1 -6.810628140983756E-5 
          -9.815943463763438E-4 3.378413070932518E-4 
    END 

而且需要的是將數據放在每個案例的單個行中。因此,所產生的格式是這樣的

% Cases e11 e12 e21 e22 
1.100000000000000E6 -2.442126570242587E-1 3.206453099773649E-2 7.623990950478551E-2 -4.055318707521479E-1 
1.200000000000000E6 -2.546137875169113E-1 -6.810628140983756E-5 -9.815943463763438E-4 3.378413070932518E-4 

END 

我知道這可能是一個初學者的水平問題,可能不會在這個論壇合適。但任何幫助或指導,使用python完成這項工作將受到真誠的讚賞。

+0

你能否告訴我們到目前爲止你已經嘗試了什麼?看看[這個鏈接](http://stackoverflow.com/help/mcve)看看如何最好地爲我們提供一個有問題代碼的最小但完整的例子。 –

回答

-1

file.txt的

% Cases e11 e12 e21 e22 
    1.100000000000000E6 -2.442126570242587E-1 3.206453099773649E-2 
          7.623990950478551E-2 -4.055318707521479E-1 

    1.200000000000000E6 -2.546137875169113E-1 -6.810628140983756E-5 
          -9.815943463763438E-4 3.378413070932518E-4 
    END 

代碼

with open('file.txt', 'rb') as f: 
    data = f.read().splitlines() 

i = 0 
result = [] 
for row in data: 
    if not row: 
     continue 
    row = row.strip() 
    if i == 0: 
     row = [row] 
    else: 
     row = row.split() 
     if i % 2 == 0: 
      result[i/2] = result[i/2] + row 
      i += 1 
      continue 
    result.append(row) 
    i += 1 

with open('out.txt', 'wb') as f: 
    data = '\n'.join(['\t'.join(x) for x in result]) 
    f.write(data) 

out.txt

% Cases e11 e12 e21 e22 
1.100000000000000E6 -2.442126570242587E-1 3.206453099773649E-2 7.623990950478551E-2 -4.055318707521479E-1 
1.200000000000000E6 -2.546137875169113E-1 -6.810628140983756E-5 -9.815943463763438E-4 3.378413070932518E-4 
END