2010-08-24 4 views
0

J'ai le problème suivant. J'ai une liste de lignes de texte différentes qui ont toutes une virgule. Je souhaite conserver le texte à gauche de la virgule et supprimer tout ce qui se produit après la virgule pour toutes les lignes du fichier.Besoin de supprimer une partie des lignes de texte en python

Voici une ligne d'échantillonnage du fichier:

1780375 « 004956, vers le bas, 943794, 22634, ET, 2115,

Je voudrais supprimer les caractères après la première virgule:

J'ai essayé de faire encore le programme ai quelques ennuis Voici ce que j'ai jusqu'à présent.

datafile = open('C:\\middlelist3.txt', 'r') 

smallerdataset = open('C:\\nocommas.txt', 'w') 

counter = 1 

for line in datafile: 
    print counter 
    counter +=1 
    datafile.rstrip(s[,]) 
    smallerdataset.write(line) 

Répondre

4

Vous pouvez utiliser split pour cela, il divise la chaîne. sur une sous-chaîne donnée. Comme vous n'avez besoin que de la première partie, je mets 1 comme deuxième paramètre pour ne le diviser que sur le premier.

Au lieu d'utiliser un compteur, vous pouvez utiliser enumerate, comme ceci:

datafile = open('C:\\middlelist3.txt', 'r') 

smallerdataset = open('C:\\nocommas.txt', 'w') 

for counter, line in enumerate(datafile): 
    print counter 
    smallerdataset.write(line.split(',', 1)[0]) 

smallerdataset.close() 

Voici comment vous pouvez améliorer votre script en utilisant l'instruction with et expressions: générateur

with open('C:\\middlelist3.txt') as datafile: 
    list = (line.split(',', 1)[0] for line in datafile) 
    with open('C:\\nocommas.txt', 'w') as smallfile: 
     smallfile.writelines(list) 
Questions connexes