使用多行字符串时的缩进

2024-05-19 06:22:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有时需要使用多行字符串,但在嵌套块中。这是可行的,但可读性很差:

CONDITION1 = CONDITION2 = CONDITION3 = True

if CONDITION1:
    if CONDITION2:
        s = """jkljkj
dfkjslfds
sqjdlqkj"""
    elif CONDITION3:
        s = """azeazea
azeoiuaez
azeytzae
azetzae"""

使用:

if CONDITION1:
    if CONDITION2:
        s = """jkljkj
               dfkjslfds
               sqjdlqkj"""

(如Pythonic way to create a long multi-line string中所建议的)不是选项,因为字符串s将是:

jkljkj
               dfkjslfds
               sqjdlqkj

留下不需要的空间。你知道吗

问题:如何在具有良好可读性的嵌套块中使用多行字符串?


Tags: 字符串trueif可读性elifcondition2condition3condition1
2条回答

将字符串包装在a call to ^{}中,它将以清理docstring的方式清理它(删除前导和尾随空格,以及任何级别的常见缩进)。你知道吗

>>> import inspect
>>> s = """jkljkj
...        dfkjslfds
...        sqjdlqkj"""
...
>>> print(s)
jkljkj
       dfkjslfds
       sqjdlqkj
>>> s = inspect.cleandoc(s)
>>> print(s)
jkljkj
dfkjslfds
sqjdlqkj

^{}也是一个选项,但它更难看,因为它要求您在第一行上不放任何文本,并显式使用行连续字符以确保每一行(不仅仅是第二行和以后的行)都有相同的前导缩进:

>>> 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会将它删除。你知道吗

你试过用“\”吗。例如:

if CONDITION1:

   if CONDITION2:

       s = "jkljkj "\
           "dfkjslfds "\
           "sqjdlqkj"

相关问题 更多 >

    热门问题