Как добавить абзацы в список в Python

#python #list #line #paragraph

#python #Список #строка #абзац

Вопрос:

Я хочу, чтобы пользователь вводил имя файла, которое содержит пару абзацев, разделенных строкой '<NEW DOCUMENT>' . Пример текстового файла:

 Look on the bright 
side of Life.
<NEW DOCUMENT>
look on the very, dark
side of the Moon
<NEW DOCUMENT>
is there life
on the moon
  

Я хочу прочитать этот файл и разделить его так, чтобы каждый индекс в списке состоял из нескольких строк
Например, если я напечатаю: print(paragraph_list[0]) , результатом будет первый абзац (текстовый файл может содержать более двух строк в каждом абзаце)

То, что я пробовал, это:

 def make_list_from_file(file_stream):
    paragraph_list = []
    for line in file_stream:
        line.strip().split('<NEW DOCUMENT>')
        paragraph_list.append(line)
    return paragraph_list
  

Я пробовал другие комбинации, но когда я печатаю первый индекс, выводится только первая строка в текстовом файле

 Look on the bright
  

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

1. Можете ли вы объяснить простыми английскими словами пошаговый процесс чтения файла? Можете ли вы сопоставить каждую строку вашего кода с соответствующим предполагаемым шагом этого процесса? Какая часть конкретно, похоже, не выполняет то, что вы хотите?

Ответ №1:

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

 def make_list_from_file(file_stream):
    with open(file_stream) as f:
        t=f.read()
    paragraph_list=t.split('<NEW DOCUMENT>')
    return paragraph_list
  

Если вы хотите напечатать какой-то абзац, результатом будет:

 >>> print(paragraph_list[0])
Look on the bright
side of Life.
  

Ответ №2:

Сначала необходимо объединить строки абзаца:

 def make_list_from_file(file_stream):
    paragraph_list = []
    temp_paragraph = ""
    for line in file_stream:
        temp_paragraph  = line   "<separator between lines>"
        if(line == "<NEW DOCUMENT>")
            paragraph_list.append(temp_paragraph)
    return paragraph_list