Python多行字符串的正确缩进

  • 问题:
  • 函数中Python多行字符串的正确缩进是什么?在

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

    或者

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

    还是别的什么?在

    在第一个例子中,字符串挂在函数外部看起来有点奇怪

  • 答案:
  • 您可能需要使用“”“

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

    由于新行和空格包含在字符串本身中,因此必须对其进行后处理。如果您不想这样做,并且您有大量的文本,您可能需要将其单独存储在一个文本文件中。如果一个文本文件不适合您的应用程序,并且您不想进行后处理,我可能会选择

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

    如果要对多行字符串进行后处理,以去掉不需要的部分,则应考虑textwrapmodule or the technique for postpprocessing docstrings presented indef 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)