保留格式

时间:2010-07-01 20:26:38

标签: python formatting

我使用函数返回一个以制表符分隔并读入的文本文件,文本文件的格式为:

  

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

我用来返回的代码是:

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 \吨   198 \ N”,   “1_0 \ tNP_250397 \ t100.00 \ T140 \ T0 \ T0 \ T1 \ T140 \ T1 \ T140 \ T6E-54 \吨   198 \ N”,   “1_0 \ tNP_250397 \ t100.00 \ T140 \ T0 \ T0 \ T1 \ T140 \ T1 \ T140 \ T6E-54 \吨   198 \ N']

有没有办法返回文件,同时保留格式?

3 个答案:

答案 0 :(得分: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()

除此之外:您可能有兴趣知道csv module也可以使用制表符分隔文件

答案 1 :(得分:0)

return h.read()会将文件的内容作为单个字符串返回,因此如果打印出来,则会“保留格式”。您对特殊命名print_file的返回值有什么其他约束(特别是因为它不会打印任何东西!)......?

答案 2 :(得分:0)

当您打印出列表时,Python会以一种原始格式打印列表,该格式表示它在内部的存储方式。如果要删除括号和逗号以及引号并希望扩展选项卡,则必须单独打印每个字符串。

for line in print_file(x):
    print line

你能不能为print_file选择一个更合适的名字,因为它实际上并没有打印任何东西?它增加了一些不能帮助你解决问题的认知失调。