Python格式化大文本

pet*_*den 9 python string-formatting

在python中格式化大块文本的最佳方法是什么?我不是指格式化输出,而是为了可读性.我一直在尝试遵循python布局指导原则,但我没有看到有关如何格式化大量文本的任何评论.

例如:

class GenerateCalendar(object):
def __init__(self):
    super( GenerateCalendar, self ).__init__()

def getCalendarHeader( self ):
    print """
BEGIN:VCALENDAR
PRODID:-//Atlassian Software Systems//Confluence Calendar Plugin//EN
VERSION:2.0
CALSCALE:GREGORIAN
X-WR-CALNAME;VALUE=TEXT:
X-WR-CALDESC;VALUE=TEXT:
"""
Run Code Online (Sandbox Code Playgroud)

大块文本看起来很糟糕,并没有缩进4个空格,因此很难阅读.

我想看到的是:

 def getCalendarHeader( self ):
    print """
    BEGIN:VCALENDAR
    PRODID:-//Atlassian Software Systems//Confluence Calendar Plugin//EN
    VERSION:2.0
    CALSCALE:GREGORIAN
    X-WR-CALNAME;VALUE=TEXT:
    X-WR-CALDESC;VALUE=TEXT:
    """
Run Code Online (Sandbox Code Playgroud)

但这会在输出的开头引入空白区域.

有关如何使其遵循python推荐布局的任何想法?我想保持它整洁,易于阅读.

是否可以在不对每行进行打印的情况下这样做?例如

def getCalendarHeader( self ):
    print "BEGIN:VCALENDAR\n"
    print "PRODID:-//Atlassian Software Systems//Confluence Calendar Plugin//EN\n"
    print "VERSION:2.0\n"
    print "CALSCALE:GREGORIAN\n"
    print "X-WR-CALNAME;VALUE=TEXT:\n"
    print "X-WR-CALDESC;VALUE=TEXT:\n"
Run Code Online (Sandbox Code Playgroud)

以上是我希望代码出现的方式,而不需要在每一行上进行打印.

Ned*_*der 22

标准库有以下工具:

import textwrap

#...

    def getCalendarHeader(self):
        print textwrap.dedent("""\
            BEGIN:VCALENDAR
            PRODID:-//Atlassian Software Systems//Confluence Calendar Plugin//EN
            VERSION:2.0
            CALSCALE:GREGORIAN
            X-WR-CALNAME;VALUE=TEXT:
            X-WR-CALDESC;VALUE=TEXT:
            """)
Run Code Online (Sandbox Code Playgroud)