2010-07-01 26 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,因为它是不是真的打印什么?它增加了一些认知不协调,不能帮助你解决问题。

相关问题