#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())