Я новичок в программировании и хотел бы получить некоторую помощь в понимании того, почему следующий алгоритм ведет себя определенным образом.
Моя цель состоит в том, чтобы функция читала текстовый файл, содержащий слова (может быть заглавными буквами), удалить пробелы, разделить элементы на отдельные строки, преобразовать все первые заглавные символы в нижний регистр, удалить все отдельные символы (например, «a», «b», «c», et c.) и добавить полученные слова в список. Все слова должны быть отдельным пунктом в списке для дальнейшей обработки.
Входной файл: текстовый файл ('sample.txt') содержит следующие данные - «яблоко b банан c вишня»
Желаемый результат: ['яблоко', 'банан', 'вишня']
В своей первоначальной попытке я попытался перебрать список слов, чтобы проверить, равна ли их длина 1. В таком случае слово должно было быть удалено из списка, а остальные слова оставались в списке. Это привело к следующему нежелательному результату: [None, None, None]
filename = ‘sample.txt’
with open(filename) as input_file:
word_list = input_file.read().strip().split(' ')
word_list = [word.lower() for word in word_list]
word_list = [word_list.remove(word) for word in word_list if len(word) == 1]
print(word_list)
Произведен нежелательный результат = [None, None, None]
Моя следующая попытка была вместо этого перебирать список слов, чтобы проверить, была ли их длина больше 1. Если да, слово должно было быть добавлено в список (оставляя отдельные символы позади). Желаемый результат был достигнут с помощью этого метода.
filename = ‘sample.txt’
with open(filename) as input_file:
word_list = input_file.read().strip().split(' ')
word_list = [word.lower() for word in word_list]
word_list = [word for word in word_list if len(word) > 1]
print(word_list)
Произведено желаемое Результат = ['яблоко', 'банан', 'вишня']
Мои вопросы:
- Почему исходный код не дал желаемого результата, когда он казался наиболее логичным и эффективным?
- Каков наилучший «питонический» способ достижения желаемого результата?