Удалить слова из списка предложений, длина которых <3 - PullRequest
0 голосов
/ 04 июня 2018

У меня есть входной файл с предложениями вроде этого:

I like apples
My mother is called Anna.

Я переношу эти предложения в список, а затем хочу удалить слова, длина которых <3. </p>

IЯ пробовал это:

with open("fis.txt", "r", encoding="utf8") as f:
    lst = [w.lower() for w in f.readlines() if len(w) >= 3]
    print(lst)

, но это дает мне ['i like apples', 'my mother is called anna.']

, и я хочу получить ['like apples', 'mother called anna.']

В чем здесь проблема?

Ответы [ 3 ]

0 голосов
/ 04 июня 2018

Попробуйте:

with open("fis.txt", "r", encoding="utf8") as f:
    print( [" ".join(j for j in w.split() if len(j) >= 3 ) for w in f.readlines() ] )

Вывод:

['like apples', 'mother called Anna.']
0 голосов
/ 04 июня 2018

Это занимает все предложение, а не отдельные слова, попробуйте перебрать w, а затем проверьте длину.

0 голосов
/ 04 июня 2018

f.readlines() дает вам список с двумя элементами, которые соответствуют двум строкам файла.

Вам нужно перебирать строки (нет необходимости сначала читать их в память, перебирая f будет делать), разбить каждую строку, а затем отфильтровать слова.

with open("fis.txt", "r", encoding="utf8") as f:
    lst = [' '.join(w.lower() for w in line.split() if len(w) >= 3) for line in f]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...