Не удается разделить файл с текстом на отдельные слова - PullRequest
0 голосов
/ 21 июня 2019

Я пытался разбить файл с текстом на отдельные слова.Я пытался использовать метод iter, модуль nltk и просто разбивал, но что-то не добавляется, когда я пытаюсь добавить результат в список.Возможно, есть какая-то проблема с синтаксисом моего приближения к файлу.

txt = open(game_file)
print txt.read()

names = []
linestream = iter(txt.read())
for line in linestream:
    for word in line.split():
        names.append(word)

, когда я пытаюсь напечатать имена списка, я просто получаю '[]'.

Ответы [ 3 ]

1 голос
/ 21 июня 2019

Удалить print txt.read(), вы перебираете пустой открытый файл

Или создайте новую переменную text = txt.read() и делайте с ней что-то

0 голосов
/ 21 июня 2019

Создание "iter" объект _any_file_obj_.read() возвращает объект iter, который перебирает каждый отдельный символ, присутствующий в файле. Который, конечно, вы не хотите достигать здесь, поскольку вы хотите разделить текст файла на отдельные слова. Если вы хотите получить каждое слово из текстового файла, то вы можете использовать следующий подход.

word_list = []
txt = open(any_file)    # creating file object

for line in txt.readlines():
    if line:
        [word_list.append(word) for word in line.split()]
txt.seek(0)

Последняя строка txt.seek (0) очень важна.

Все это время ваш код давал пустой список [], поскольку текущая позиция файлов после одной полной итерации указывала на конец файла (EOF). _file_obj_.seek () может использоваться для возврата текущей позиции файлов в любое место в открытом файле

0 голосов
/ 21 июня 2019

Когда вы делаете txt.read(), вы уже в конце вашего файла.Поэтому при попытке перезапустить указатель файла уже в конце, и он ничего не находит.Попробуйте удалить свою вторую строку, и она должна работать!

Кроме того, вам не нужно делать iter(txt.read()), for line in txt должно работать!

...