我使用函数返回一个以制表符分隔并读入的文本文件,文本文件的格式为:
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']
有没有办法返回文件,同时保留格式?
答案 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
选择一个更合适的名字,因为它实际上并没有打印任何东西?它增加了一些不能帮助你解决问题的认知失调。