2010-07-01 4 views
0

Im en utilisant une fonction pour retourner un fichier texte qui est délimité par des tabulations et lu, le format du fichier texte est le suivant:Conserver le formatage

1_0 NP_250397 100,00 140 0 0 1 140 1 140 6E-54 198

1_0 NP_250378 140 60,00 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

Ma morue e utilisé pour retourner est:

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

Mais quand son imprimé il ressemble à:

[ '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 \ t 198 \ n ']

Est il existe un moyen de retourner le fichier, tout en conservant le formatage?

+0

Que doit faire le "x" dans la fonction print_file? –

Répondre

2

Si vous voulez print_file réellement imprimer le fichier comme le nom de la fonction suggère

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

Si vous voulez retourner le contenu du fichier en une seule chaîne

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

Si votre Python est trop vieux pour utiliser l'instruction

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

À côté: Vous serez peut-être intéressé De plus, le csv module peut fonctionner avec des fichiers délimités par des tabulations.

+0

Je reçois une erreur de syntaxe invalide lorsque je passe la seconde méthode? – Gary

+0

@Gary, si vous utilisez python2.5 inclure cette ligne en haut du fichier 'from __future__ import with_statement' –

+0

essayé, toujours obtenir une erreur de syntaxe invalide – Gary

0

return h.read() retournerait le contenu du fichier sous forme de chaîne unique, et donc de "conserver le formatage" si cela est imprimé, comme vous l'avez dit. Quelles autres contraintes avez-vous sur la valeur de retour de la print_file (en particulier parce qu'il ne imprimer rien quoi que ce soit!) ...?

+0

h.readlines() est retourné à un autre script python où il est imprimé – Gary

+0

@Gary, si l'impression est tout ce qui est nécessaire alors 'h.read()' est la solution parfaite. –

0

Lorsque vous imprimez une liste, Python imprime la liste dans un format brut qui représente son stockage interne. Si vous souhaitez supprimer les parenthèses, les virgules et les guillemets et que vous souhaitez étendre les onglets, vous devez imprimer chaque chaîne individuellement.

for line in print_file(x): 
    print line 

Et pourriez-vous s'il vous plaît choisir un nom plus approprié pour print_file, car il est pas vraiment quoi que ce soit l'impression? C'est en ajoutant un peu de dissonance cognitive qui n'aide pas votre problème.