2016-03-22 9 views
-1
from nltk.corpus import stopwords 
print "starting to read \n" 

fw=open('cde.txt','w'); 

with open('test.txt') as fp: 
    for line in fp: 
       fw.write('\n') 
       fw.write(line) 
fp.close() 
fw.close() 

print "\ndone with writing \n" 

print "starting to print from another file \n" 

with open('cde.txt','r+') as ss: 
    for line in ss: 
     for word in line.split(): 
       if word in stopwords.words('english'): 
         #ss.write(line.remove(word)) 
         ss.remove(word) 

#print line.rstrip() 
ss.close() 

#for word in line.split(): 

print "done with printing from another file" 

ich dieses Skript leite aber haltenAttribute: ‚Datei‘ Objekt hat kein Attribut ‚entfernen‘

AttributeError: 'file' object has no attribute 'remove' 

Fehler.

+3

Was möchten Sie eigentlich erreichen? –

+0

[Related] (http://stackoverflow.com/questions/21005921/deeleting-a-spezifische-word-from-a-file-in-python) – Idos

+0

Ich wollte Stoppwörter aus einer Datei entfernen – sk79

Antwort

0

Da die genaue Spur des Fehlers von der Frage fehlt, würde ich vermuten, dass der Fehler aufgrund des Anrufs ss.remove() ist. Von diesem Code ss scheint ein Datei-Handle zu sein, und (wie der Fehler vorschlägt) Dateiobjekte unterstützen remove() Methode nicht. Wenn Sie die Datei entfernen möchten, können Sie os.remove(filepath) verwenden, aber dieser Code scheint das nicht zu tun. Im Moment versucht der Code das Wort aus der Datei zu entfernen (was kein unterstützter Vorgang ist).

Wenn Sie Wörter aus Ihrer Datei entfernen möchten, können Sie mit dem Erstellen einer anderen Datei (wie einer temporären) beginnen, die nur die gewünschten Informationen enthält, und nach Abschluss der Verarbeitung die alte Datei durch ersetzen Diese neu generierte Datei (und möglicherweise die temporäre Datei am Ende entfernen).

Wenn Sie stopwords aus den Daten ausschließen möchten, können Sie die Daten in einer Liste halten, wie folgt aus:

with open('cde.txt.cleared', 'w+') as output: 
    with open('cde.ext', 'r+') as ss: 
     for line in ss: 
      words = line.strip().split() 
      for word in words: 
       if word in stopwords.words('english'): 
        words.remove(word) 
      output.write(' '.join(words) + '\n') 

Beachten Sie, dass wir die Ausgabedatei im Schreibmodus geöffnet. Beachten Sie auch, dass dieser Code die Anzahl der Leerzeichen zwischen den Wörtern nicht speichert, da er die Zeile in eine Liste konvertiert und die Zeile dann erneut aus diesen Wörtern konstruiert. Wenn das ein Problem ist, denke ich, dass Sie möglicherweise an den Zeichenfolgen arbeiten müssen, anstatt sie in eine Liste aufzuteilen.

0

Ich vermute, OP will Stoppwörter aus der Datei entfernen. Um dies zu tun, versuchen Sie:

for line in ss: 
    parts = line.split() 
    for word in xrange(len(parts)): 
     if parts[word] in in stopwords.words('english'): 
      parts.remove(parts[word]) 

    ss.write(' '.join(parts)) 

Ich hoffe, dies sortiert Sie. Wenn nicht, hinterlasse einen Kommentar mit mehr Details.

+0

danke für die Antwort, ich habe den folgenden Code hinzugefügt und führte das Skript erneut mit open ('cde.txt', 'r +') als ss: für Zeile in SS: für Word in xrange (len (Zeile. split())): wenn line [Wort] in stopwords.words ('Englisch'): line.remove (Wort) ss.write (Linie) aber ich bekomme die folgende Fehlermeldung jetzt Traceback (die meisten letzten Aufruf): Datei "read.py", Zeile 21, in line.remove (Wort) AttributeError: 'str' Objekt hat kein Attribut 'remove' – sk79

+0

Sorry, matey, ein bisschen schlampig codi ng meinerseits, sollte es jetzt in Ordnung sein – hd1

+0

heyy, jetzt bekomme ich diesen Fehler .. Traceback (jüngste Aufforderung zuletzt): File "read.py", Zeile 22, in parts.remove (Wort) Valueerror: list.remove (x): x in der Liste nicht – sk79

0

Dieses Code-Snippet liest Text aus der Datei test.txt und schreibt den gleichen Text nach dem Entfernen der Stoppwörter in die Datei 'cde.txt'. Dies könnte Ihnen helfen.

linetext=[] 
for line in ss: 
    line1=[] 
    for word in line.split(): 
     if word not in stopwords.words('english'): 
      line1.append(word) 

    linetext.append(" ".join(line1)) 
    linetext.append('\n') 
with open('cde.txt','wb') as fw: 
    fw.writelines(linetext) 
Verwandte Themen