Почему я не получаю слова, только буквы?

#python

#python

Вопрос:

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

  • Пример вывода: A a e l n p

  • желаемый РЕЗУЛЬТАТ: ['apple', 'ein', 'pear', 'purple']

 f = open(input("What file would you like to import?"))
for word in sorted(f.read().split()):
    print(sorted(word))
  

Комментарии:

1. Избавьтесь от своего второго вызова sort()

2. Как вы думаете sorted(words) , что делает? Зачем ты это сделал? Вы уже отсортировали список в строке раньше.

3. Ваш желаемый результат вообще не сортируется.

4. Я смог удалить избыточный вызов .split, и теперь в списке отображаются слова в aplha, но теперь мне нужно ввести их в нижний регистр. Спасибо!

5. Просто замените sorted(word) на word .

Ответ №1:

Вы были действительно близки! Вы просто не хотите сортировать слово перед его печатью. Вы уже отсортировали список:

 f = open(input("What file would you like to import?"))
for word in sorted(f.read().split()):
    print(word)
  

Пример содержимого файла:

 now is the time for all good
men to come to the aid of
their country
  

Результат:

 aid
all
come
country
for
good
is
men
now
of
the
the
their
time
to
to
  

Ответ №2:

Если вы sorted(word) затем sorted разбиваете свое слово (строку) на буквы и сортируете их, вам не нужно использовать сортировку, просто используйте word , поскольку ваши слова уже отсортированы! Исправленный код ниже:

Попробуйте онлайн!

 f = open(input("What file would you like to import?"))
for word in sorted(f.read().split()):
    print(word)
  

Входной файл:

 apple purple pear ein
  

Вывод:

 apple
ein
pear
purple
  

Если вам нужно иметь list вывод in, вы можете использовать следующий простой код:

Попробуйте онлайн!

 f = open(input("What file would you like to import?"))
print(sorted(f.read().split()))
  

Входной файл:

 apple purple pear ein
  

Вывод:

 ['apple', 'ein', 'pear', 'purple']
  

Комментарии:

1. Это не делает того, что пытался сделать код OPs.

2. @Steve исправлено!