2016-10-25 14 views
-2

Я пытаюсь увеличить слово для процесса интеллектуального анализа. У меня есть файл csv. Мои текстовые данные были собраны в столбце «Abstrac». Поэтому я пытаюсь запустить следующий код, но получаю ошибку 'file' object has no attribute '__getitem__'.ошибка '__getitem__' в tokenizing в 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' это просто файл-подобный объект, а не структура данных производится путем анализа содержимого файла. – chepner

ответ

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

Вы пытаетесь прочитать данные только из Abstract колонок? Если да, то используйте csv.DictReader класс:

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

 Смежные вопросы

  • Нет связанных вопросов^_^