Если под "короче 5" вы имеете в виду "длиной менее 5 символов", вы можете просто изменить свое регулярное выражение, чтобы не возвращать эти слова в первую очередь, используя {5,}
(пять или более) вместо +
(один или несколько):
words = re.findall(r'\w{5,}', open('some_poem.txt').read().lower())
Ниже указано не , что вы просили, но в зависимости от того, что вы действительно хотите, может быть более полезным получить set
из остановите слова и отфильтруйте их из списка слов, поскольку вполне могут быть «релевантные» слова, содержащие не более пяти букв, и не относящиеся к делу с большим.
stop_words = set("a,able,about,across,...,you,your".split(","))
words = re.findall(r'\w+', open('some_poem.txt').read().lower())
words = [word for word in words if word not in stop_words]
Кроме того, для полноты картины, как отмечается в комментариях, вы должны использовать привычку with
открывать файлы, чтобы впоследствии убедиться, что они правильно закрыты.
with open('some_poem.txt') as f:
words = re.findall(r'\w{5,}', f.read().lower())