как вызвать первую строку в текстовом файле, но она преобразует ее в стеммер портера?

#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")) что, например, должно давать вам тот же вывод