2013-02-19 3 views
0

J'ai un fichier et certaines lignes ont un \ n au mauvais endroit. Je suis capable de les trouver correctement, mais quand j'essaie de sortir mes résultats dans un nouveau fichier, ils montrent toujours le \ n, même si j'imprime les résultats, ils sortent très bien. Voici mon code à ce jour:Supprimer des retours de ligne spécifiques (" n") du fichier

f = open("DUP1.txt","r") 
w = open("output.txt", "w") 
mark = 0 

for line in f: 
    if mark == 1: 
    mark = 0 
    w.write(outputline.replace("\n","\t") + line) 
    else: 
    subp = line.find(".") 
    if subp < 8: 
     mark = 1 
     outputline = line.replace("\n","") 
    else: 
     w.write(line) 

le fichier que je suis l'ouverture ressemble à:

ABC0005 other info here 
ABC0005.23 
other  info here 
ABC0005.46 
other  info here 

et je suis en train de le faire pour ressembler à:

ABC0005 other info here 
ABC0005.23 other info here 
ABC0005.46 other info here 
+0

'w.write (ligne)' devrait être 'w.write (ligne de sortie)' je pense. – utdemir

+0

non celui-là est correct parce que c'est si la ligne n'a pas besoin de fixation. – rjbogz

+0

il n'y a rien de drôle avec des personnages de hidder est là? Comme un '\ r' quelque part? – Hoopdady

Répondre

2
with open('testdata.txt') as fin, open('testdata.out', 'w') as fout: 
    for line in fin: 
     if 0 <= line.find('.') <= 8: 
      fout.write(line.rstrip() + '\t' + next(fin)) 
     else: 
      fout.write(line) 
+0

Magnifiquement fait! Je n'étais pas au courant de next(). Je vous remercie! – rjbogz

0

Même si je ne peut pas comprendre ce qui ne va pas, voici une jolie doublure:

infile = open("test") 
outfile = open("out", "w")  
outfile.writelines(s if not i%2 else s.replace("\n", "\t") for i, s in enumerate(infile)) 

Modifier: John Clements's answer est mieux.

+0

Bien que cela en fasse un doublure, il produit toujours le même résultat que j'ai obtenu. =/ – rjbogz

1

Cette ligne:

subp = line.find(".") 

retours -1 quand "." n'est pas en subp. Cela chamboule votre logique.

Questions connexes