Python. как мне выполнить split() из текстового файла?

#python #list

#python #Список

Вопрос:

  But soft what light through yonder window breaks
 It is the east and Juliet is the sun
 Arise fair sun and kill the envious moon
 Who is already sick and pale with grief
  

Из этого файла я должен 8.4 открыть файл romeo.txt и прочитать его построчно. Для каждой строки разделите строку на список слов, используя метод split(). Программа должна создать список слов. Для каждого слова в каждой строке проверьте, есть ли слово уже в списке, и если нет, добавьте его в список. Когда программа завершится, отсортируйте и распечатайте полученные слова в алфавитном порядке.
Вы можете загрузить образцы данных поhttp://www.py4e.com/code3/romeo.txt

это фрейм, поэтому я должен следовать только этому коду и использовать append(), slpit() и sort(), я должен использовать их. или в другом случае он покажет ошибку. поскольку это назначение из coursera.com

 fname = input("Enter file name: ")
fh = open(fname)
lst = list()
for line in fh:
print(line.rstrip())
  

и вывод должен выглядеть следующим образом:

       ['Arise', 'But', 'It', 'Juliet', 'Who', 'already', 'and', 'breaks', 'east', 'envious', 'fair', 
      'grief', 'is', 'kill', 'light', 'moon', 'pale', 'sick', 'soft', 'sun', 'the', 'through', 
      'what', 'window', 'with', 'yonder']
  

был бы весьма признателен. Спасибо

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

1. Добро пожаловать в SO! Пожалуйста, укажите вашу проблему, что вы пробовали и чем ваш результат отличается от ожидаемого результата. Прямо сейчас у нас есть только некоторые входные данные, ожидаемый результат и пять строк кода, которые даже не являются допустимыми для python.

2. Вам нужно разделить line на пробел. Затем для каждого слова в результирующем массиве проверьте, есть ли оно в lst. , если нет, добавьте его.

Ответ №1:

Чтобы прочитать текстовый файл, вы должны сначала открыть его:

 with open('text.txt', 'r') as in_txt:
    values = in_txt
    l=[]
    for a in values:
        l.extend(a.split())
    print(l)
  

Используйте with , чтобы убедиться, что ваш файл закрыт. 'r' для режима только для чтения.
extend добавит элементы из списка, в данном случае a в существующий список, l .

Ответ №2:

 words = set()
with open('path/to/romeo.txt') as file:
    for line in file.readlines():
        words.update(set(line.split()))

words = sorted(words)
  

Ответ №3:

Должно сработать следующее:

 fname = input("Enter file name: ")

with open(fname, 'r') as file:
    data = file.read().replace('n', '')

# Split by whitespace
arr = data.split(' ')

#Filter all empty elements and linebreaks
arr = [elem for elem in arr if elem != '' and elem != 'rn']

# Only unique elements
my_list = list(set(arr))

# Print sorted array
print(sorted(arr))
  

Ответ №4:

Использование set s в python лучше, чем list в вашем примере.

наборы — это повторяющиеся элементы, у которых нет повторяющихся элементов.

 # open, read and split words
myfile_words = open('romeo.txt').read().split()

# create a set to save words
list_of_words = set()

# for loop for each word in word list and it to our word list
for word in myfile_words:
    list_of_words.add(word)

# close file after use, otherwise it will stay in memory
myfile_words.close()

# create a sorted list of our words
list_of_words = sorted(list(list_of_words))