2010-07-01 55 views
0

IM,文本文件的格式是:保留使用函數返回一個文本文件,它是製表符分隔的,並閱讀格式化

1_0 NP_250397 100.00 140 0 0 1 140 1 140 6E-54 198

1_0 NP_250378 60.00 140 0 0 1 140 1 140 6E-54 198

1_0 NP_257777 70.00 140 0 0 1 140 1 140 6E-54 198

我的鱈魚用於返回e是:

def print_file(x): 
    h = open('/home/me/data/db/test.blast', 'r') 
    return h.readlines() 

但是,當它的印刷,它看起來像:

['1_0 \ tNP_250397 \ t100.00 \ T140 \ T0 \ T0 \ T1 \ T140 \ T1 \ T140 \ t6e-54 \ t 198 \ n', '1_0 \ tNP_250397 \ t100.00 \ t140 \ t0 \ t0 \ t1 \ t140 \ t1 \ t140 \ t6e-54 \ t 198 \ n', '1_0 \ tNP_250397 \ t100.00 \ T140 \ T0 \ T0 \ T1 \ T140 \ T1 \ T140 \ T6E-54 \噸 198 \ N']

是有一種方法返回文件,同時保留格式?

+0

什麼是「x」應該在print_file函數中做的事情? – 2010-07-01 20:49:19

回答

2

如果你想print_file實際打印文件的功能顧名思義

def print_file(x): 
    with open('/home/me/data/db/test.blast', 'r') as h: 
     for line in h: 
      print line 

如果你想將文件的內容返回一個字符串

def print_file(x): 
    with open('/home/me/data/db/test.blast', 'r') as h: 
     return h.read() 

如果你的Python是太舊以致無法使用with聲明

def print_file(x): 
    return open('/home/me/data/db/test.blast', 'r').read() 

另外:您可能有興趣kn ow csv module也可以使用製表符分隔的文件

+0

當我第二種方法時,我得到一個無效的語法錯誤? – Gary 2010-07-01 20:41:31

+0

@Gary,如果你使用的是python2。5在文件頂部包含這行'from __future__ import with_statement' – 2010-07-01 20:44:37

+0

試過了,仍然得到一個無效的語法錯誤 – Gary 2010-07-01 20:48:22

0

return h.read()會將該文件的內容作爲單個字符串返回,因此,如果您打印該文件,則會「保留格式設置」。你有什麼其他的限制,特別是print_file的返回值(特別是因爲它不打印任何東西!)...?

+0

h.readlines()返回到打印出來的另一個python腳本 – Gary 2010-07-01 20:36:27

+0

@Gary,如果只需要打印它,那麼'h.read()'是一個完美的解決方案。 – 2010-07-01 22:31:06

0

當您打印出列表時,Python會以一種原始格式打印列表,以表示它在內部如何存儲。如果您想消除括號和逗號和引號,並希望擴展標籤,則必須單獨打印每個字符串。

for line in print_file(x): 
    print line 

而且請你選擇一個更合適的名稱爲print_file,因爲它是不是真的打印什麼?它增加了一些認知不協調,不能幫助你解決問題。

相關問題