#python
Вопрос:
У меня возникла ошибка. Я пытаюсь прочитать первую строку своего файла и хотел преобразовать его с помощью porterstemmer
from nltk.stem.porter import PorterStemmer
stemmer = PorterStemmer()
with open('notepad.txt') as f:
lines = f.readlines()
word_stemmer = PorterStemmer()
s = word_stemmer.stem(lines) #error
print(s)
Ошибка: объект «список» не имеет атрибута «ниже»
Кроме того, слово в текстовом файле — «ест». Результат, который я ожидаю, должен быть «ешь»
notepad.txt
eats
runs
Комментарии:
1.
s = word_stemmer.stem(lines[0])
?2. Казалось бы , что
word_stemmer.stem
ожидает аstr
, но вы дали ему аlist
.3.
f.readline()
(единственное число) будет читать по одной строке за раз изf
.4.
f.readlines()
(множественное число) прочитает весь файл и вернет списокf
строкlines
иword_stemmer.stem()
ожидает в качестве аргумента строку, а не список. Кроме того, вы заявили, что » пытаетесь прочитать первую строку… «из досье.5. Ясное объяснение! Ценю это! Кроме того, я попробовал только readline (), но вывод становится » e » и возвращает его по умолчанию, то есть readlines (), и он отлично работает!
Ответ №1:
Если вам нужна только одна строка, то не зачитывайте их все в список
word_stemmer = PorterStemmer()
open('notepad.txt') as f:
line = next(f).rstrip()
s = word_stemmer.stem(line)
print(s)
Если бы вы хотели остановить все линии
word_stemmer = PorterStemmer()
open('notepad.txt') as f:
for line in f:
s = word_stemmer.stem(line.rstrip())
print(s)
Комментарии:
1. Пробовал это, но вывод не работает
2. Хорошо, что ж, это устраняет ошибку. На самом деле я не пробовал это с каким-либо конкретным файлом, но на самом деле это не имеет никакого отношения к файлам , потому
print(word_stemmer.stem("eats"))
что, например, должно давать вам тот же вывод