2010-08-05 3 views
3

Je souhaite nettoyer ma sortie et écrire uniquement une partie de la ligne dont j'ai besoin dans un nouveau fichier et non pas toute la ligne entière. Ceci est la section de codage relevent:Ecriture d'une partie d'une ligne dans un fichier

counter = 1 

for line in completedataset: 
    print counter 
    counter +=1 

    for t in matchedLines: 
     if t in line[:line.find(',')]: 
      smallerdataset.write(line) 
      break 

Voici un échantillon des données:

NOVE1780418" , "---", "JAX17054099", "5", "156323558", etc pour la Je veux seulement écrire jusqu'au nombre avant la 3ème virgule J'ai besoin d'aide pour modifier la ligne d'écriture pour n'écrire que jusqu'à la troisième virgule Ce fichier est très volumineux et j'espère que tout nouveau code ne ralentira pas le programme, mais plutôt l'accélérer.Merci Bob

+0

désolé ils ne sont rien –

+0

Pas un répondez à votre question, mais il semblerait que vous aimiez utiliser la fonction enumerate: "pour counter, line in enumerate (completedataset):" – fholo

Répondre

4

Il devrait être aussi simple que thi s ...

for line in infile: 
    line = line.strip().split(',') 
    outfile.write(','.join(line[:3]) + '\n') 
1
for line in infile: 
    line = line.strip().split(',',3) 
    outfile.write(','.join(line[:-1]) + '\n') 

S'il y a une possibilité de « » montrant dans l'un des champs, vous aurez besoin d'utiliser le module csv

Questions connexes