Правильный отступ для многострочных строк Python

Присвоить документы MySQL.

Механизм хранения InnoDB поддерживает таблицы InnoDB в табличном пространстве, которое может быть создано из нескольких файлов. Это позволяет таблице превышать максимальный размер отдельного файла. В табличное пространство могут входить необработанные разделы диска, что позволяет использовать чрезвычайно большие таблицы. Максимальный размер табличного пространства - 64 ТБ.

Если вы используете таблицы InnoDB и выходите из комнаты в табличном пространстве InnoDB. В этом случае решение заключается в расширении табличного пространства InnoDB. См. Раздел 13.2.5, [«Добавление, удаление или изменение размера данных и файлов журнала InnoDB».]

419
задан Kevin Guan 4 November 2015 в 03:32
поделиться

3 ответа

Вы, вероятно, захотите выровняться с "" "

def foo():
    string = """line one
             line two
             line three"""

Поскольку символы новой строки и пробелы включены в саму строку, вам придется ее обработать. Если вы не хотите этого делать и у вас много текста, вы можете сохранить его отдельно в текстовом файле. Если текстовый файл не работает хорошо для вашего приложения, и вы не хотите постобработку, я бы, вероятно, выбрал

def foo():
    string = ("this is an "
              "implicitly joined "
              "string")

. Если вы хотите постобработать многострочную строку, чтобы вырезать части, которые вам не нужны, вам следует рассмотреть вариант textwrap или метод постобработки строк документации, представленный в PEP 257 :

def trim(docstring):
    if not docstring:
        return ''
    # Convert tabs to spaces (following the normal Python rules)
    # and split into a list of lines:
    lines = docstring.expandtabs().splitlines()
    # Determine minimum indentation (first line doesn't count):
    indent = sys.maxint
    for line in lines[1:]:
        stripped = line.lstrip()
        if stripped:
            indent = min(indent, len(line) - len(stripped))
    # Remove indentation (first line is special):
    trimmed = [lines[0].strip()]
    if indent < sys.maxint:
        for line in lines[1:]:
            trimmed.append(line[indent:].rstrip())
    # Strip off trailing and leading blank lines:
    while trimmed and not trimmed[-1]:
        trimmed.pop()
    while trimmed and not trimmed[0]:
        trimmed.pop(0)
    # Return a single string:
    return '\n'.join(trimmed)
439
ответ дан 22 November 2019 в 23:16
поделиться

Функция textwrap.dedent позволяет начать с правильного отступа в исходном тексте , а затем удалить его из текста перед использованием.

Компромисс, как отметили некоторые другие, заключается в том, что это дополнительный вызов функции для литерала; примите это во внимание, решая, где разместить эти литералы в вашем коде.

import textwrap

def frobnicate(param):
    """ Frobnicate the scrognate param.

        The Weebly-Ruckford algorithm is employed to frobnicate
        the scrognate to within an inch of its life.

        """
    prepare_the_comfy_chair(param)
    log_message = textwrap.dedent("""\
            Prepare to frobnicate:
            Here it comes...
                Any moment now.
            And: Frobnicate!""")
    weebly(param, log_message)
    ruckford(param)

Завершающий \ в литерале сообщения журнала должен гарантировать, что разрыв строки не находится в литерале; таким образом, литерал не начинается с пустой строки, а начинается со следующей полной строки.

Возвращаемое значение из textwrap.dedent - это входная строка с удалением всех общих отступов от начальных пробелов в каждой строке строки. Таким образом, указанное выше значение log_message будет:

Prepare to frobnicate:
Here it comes...
    Any moment now.
And: Frobnicate!
237
ответ дан 22 November 2019 в 23:16
поделиться

Это зависит от того, как вы хотите отображать текст. Если вы хотите, чтобы все было выровнено по левому краю, либо отформатируйте его, как в первом фрагменте, либо перебирайте строки, обрезая все пространство.

0
ответ дан 22 November 2019 в 23:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: