Оберните строку в вызовом inspect.cleandoc
, и он очистит ее так же, как очищаются строки документов (удаляя начальные и конечные пробелы и любые уровни общего отступа).
>>> import inspect
>>> s = """jkljkj
... dfkjslfds
... sqjdlqkj"""
...
>>> print(s)
jkljkj
dfkjslfds
sqjdlqkj
>>> s = inspect.cleandoc(s)
>>> print(s)
jkljkj
dfkjslfds
sqjdlqkj
textwrap.dedent
также является опцией, но она более уродлива, поскольку требует, чтобы вы не помещали текст в первую строку и явно использовали символ продолжения строки, чтобы каждыйСтрока (не только вторая и последующие) имеет одинаковые начальные отступы:
>>> print(textwrap.dedent('''\
... The^backslash is a pain
... so I don't recommend this approach
... '''))
The^backslash is a pain
so I don't recommend this approach
Обратите внимание, что хотя блоки кода в SO не показывают это должным образом, dedent
оставил пустую последнюю строку (изпоместив закрывающий '''
на отдельную строку), где cleandoc
удалил бы его.