2016-03-22 23 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" 

'kaldır' amaAttributeError: 'dosya' nesne bu senaryoyu çalıştırıyorum

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

hata almaya devam hiçbir özelliği vardır.

+3

Gerçekten neye ulaşmak istiyorsunuz? –

+0

[İlgili] (http://stackoverflow.com/questions/21005921/deleting-a-specific-word-from-a-file-in-python) – Idos

+0

i bir dosyadan gerçekte nedir – sk79

cevap

0

Sorunun tam izinden eksik olduğundan, başarısızlığın ss.remove() numaralı çağrıya bağlı olduğunu tahmin ediyorum. Bu koddan ss bir dosya tanıtıcısı gibi görünüyor ve (hata önerileri gibi) dosya nesneleri, remove() yöntemini desteklemiyor.

Dosyayı kaldırmak isterseniz, os.remove(filepath) kullanabilirsiniz, ancak bu kod bunu yapıyor gibi görünmüyor. Şu anda kod sözcüğü dosyadan kaldırmaya çalışıyor (bu şekilde desteklenen bir işlem değil).

Dosyanızdaki sözcükleri kaldırmak isterseniz, basit bir yaklaşım, yalnızca istenen bilgileri içeren başka bir dosya (geçici bir dosya gibi) oluşturmaya başlamak olacaktır ve işlem tamamlandıktan sonra eski dosyayı Bu yeni oluşturulan dosya (ve muhtemelen geçici dosyayı sonunda kaldırın). Eğer verilerden stopwords dışlamak isterseniz

, böyle bir listede verileri tutabilir: Biz yazma modunda çıkış dosyasını açtı

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') 

Not. Ayrıca, bu kod, satırları bir listeye dönüştürdüğü için sözcükler arasındaki boşluk sayısını koruduğunu ve sonra bu sözcüklerden tekrar satırı oluşturduğunu unutmayın. Bu bir sorunsa, onları bir listeye bölmek yerine dizeler üzerinde çalışmanız gerekebilir.

0

Bence OP, şifreleri dosyadan kaldırmak istiyor. Bunu yapmak için, şunu deneyin:

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)) 

Umarım bu sizi sıralar. Değilse, daha ayrıntılı bir yorum bırakın.

+0

sayesinde, aşağıdaki kodu ilave edildi ve tekrar ss açık ('cde.txt', 'r +') ile komut ran: xrange kelimesi (len (hat için : ss hattı için. bölme())): halinde stopwords.words satır [kelime]() 'ingilizce': line.remove (kelime) ss.write (hat) ama aşağıdaki hata hemen traceback alır (çoğu son çağrı Son): Dosya "read.py", satır 21, line.remove (word) AttributeError: 'str' nesnesinin 'remove' özelliği yoktur – sk79

+0

Üzgünüz, matey, biraz özensiz codi Benim bölüm, şimdi bu hata alıyorum şimdi – hd1

+0

heyy, olmalı. traceback (en son çağrı son): parts.remove (word) içinde Dosya "read.py", satır 22, ValueError: list.remove (x): Listedeki – sk79

0

Bu kod parçacığı, test.txt dosyasından metin okuyup, metni sildikten sonra 'cde.txt' dosyasına yazmaktadır. Bu size yardımcı olabilir.

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) 
İlgili konular