2016-10-25 3 views
-2

Ich versuche, Wort für Text-Mining-Prozess zu toknnize. Ich habe eine CSV-Datei. Meine Textdaten wurden im Spaltennamen "Abstrac" gesammelt. Also versuche ich den folgenden Code auszuführen, bekomme aber den Fehler 'file' object has no attribute '__getitem__'.bekommen '__getitem__' Fehler beim Tokenizing in Python

enter image description here

def get_tokens(): 
    with open('scopus (1).csv', 'r') as data: 
     text = data['Abstract'].read() 
     lowers = text.lower() 
    #remove the punctuation using the character deletion step of translate 
     no_punctuation = lowers.translate(None, string.punctuation) 
     tokens = nltk.word_tokenize(no_punctuation) 
    return tokens 
tokens = get_tokens() 
count = Counter(tokens) 
print count.most_common(10) 

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-12-e7af75d6fd69> in <module>() 
     7   tokens = nltk.word_tokenize(no_punctuation) 
     8  return tokens 
----> 9 tokens = get_tokens() 

<ipython-input-12-e7af75d6fd69> in get_tokens() 
     1 def get_tokens(): 
     2  with open('scopus (1).csv', 'r') as data: 
----> 3   text = data['Abstract'][i].read() 
     4   lowers = text.lower() 
     5  #remove the punctuation using the character deletion step of translate 

TypeError: 'file' object has no attribute '__getitem__' 
+0

'data' ist nur eine Datei-ähnliches Objekt, nicht eine Datenstruktur erzeugt, indem der Inhalt der Datei Parsen. – chepner

Antwort

1
text = data['Abstract'][i].read() 

Sind Sie versuchen, Daten aus der Abstract Spalte nur zu lesen? Wenn ja, verwenden Sie die csv.DictReader Klasse:

r = csv.DictReader(data) 
for row in r: 
    text = row['Abstract'] 
    #Process line by line 
Verwandte Themen