2013-06-30 2 views
0

J'ai un fichier d'entrée, dont chaque ligne est dans la forme d'une liste en python. Il ressemble à ceci:python: Comment supprimer les ponctuations du fichier

['people', 'desert', 'snow'] 
['people', 'flower', 'garden', 'goat'] 

Je veux traiter ce fichier et supprimer tous les ponctuations de lui, à savoir « [ », « ] », « » et ""

J'utilise le code suivant:

import string 
import re 

openfile=open('jcn','r') 
writefile=open('jcnout','w') 
punctuation=["[","]",",","'"] 

for line in openfile: 
    line.translate(None, string.punctuation) 
    writefile.write(line) 

writefile.flush() 
writefile.close() 
openfile.close() 

Mais cela ne semble pas fonctionner, c'est-à-dire que la ponctuation est retenue dans le fichier de sortie. Quelqu'un pourrait-il s'il vous plaît me dire où je me trompe

+1

voir http://stackoverflow.com/questions/265960/best-way-to-strip-punctuation-from-a-string-in- python – Vorsprung

+0

note: '.close()' vide le fichier; vous pouvez laisser 'writefile.flush()' – jfs

+0

@Vorsprung: Merci pour la référence rapide – nish

Répondre

3

Vous devez changer

line.translate(None, string.punctuation) 

à

line = line.translate(None, string.punctuation) 

En Python, les chaînes sont immuables. En conséquence, translate() ne modifie pas la chaîne en place, mais plutôt renvoie la chaîne traduite (que vous ignorez).

+0

merci, cela fonctionne :) – nish

0

Pour soutenir la ponctuation à l'intérieur les cordes:

import ast 
import fileinput 

for line in fileinput.input(inplace=1): #NOTE: replace inplace 
    print " ".join(ast.literal_eval(line)) 
Questions connexes