Как отобразить текст из файла .txt с правильными разрывами строк при выводе на терминал

#python #function #text #terminal

Вопрос:

Я пишу относительно простой тестовый сценарий набора текста для запуска в терминале. У меня есть пример текстового блока, который сохраняется как text_block.txt :

 Roads go ever ever on, Over rock and under tree, By caves where never sun has shone, By streams that never find the sea; Over snow by winter sown, And through the merry flowers of June, Over grass and over stone, And under mountains in the moon.  

и следующая функция, чтобы прочитать это в:

 def load_text():  with open("text_block.txt", "r") as f:  lines = []  for line in f:  lines.append(line.strip())  lines = ''.join(lines)  return lines  

что дает следующее при отображении в терминале:

 Roads go ever ever on,Over rock and under tree,By caves where never sun has shone,By streams that never find the sea;Over snow by winter sown,And through the merry flowers of June,Over grass and over stone,And under mountains in the moon.  

Как сделать так, чтобы при этом были правильные разрывы строк, имитирующие форматирование текстового файла?

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

1. Не .strip()

Ответ №1:

Вы можете получить желаемый результат, вставив разрывы строк между всеми словами:

 a = ["abc", "deg", "II"] b = "n".join(a) gt;gt;gt; b 'abcndefnII' gt;gt;gt; print(b) abc deg II  

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

 b  = "n" gt;gt;gt; print(b) abc deg II   

Но вы также можете улучшить свой код. Вы можете использовать понимание списка, чтобы избавиться от некоторых лишних строк (это делает то же самое, что и в вашем примере).

 with open() as f:  return "".join([for line in f])  

Удаление .strip() сохранит все содержимое файла (включая существующие разрывы строк).

Или короче:

 with open() as f:  return "".join(f.readlines())