Python格式化大文本

Python格式化大文本,python,string-formatting,Python,String Formatting,在python中格式化大文本块的最佳方法是什么?我的意思不是格式化输出,而是为了可读性。我一直在尝试遵循,但我没有看到任何关于如何格式化大文本块的评论 例如: class GenerateCalendar(object): def __init__(self): super( GenerateCalendar, self ).__init__() def getCalendarHeader( self ): print """ BEGIN:VCALENDAR PRODID:-/

在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:
"""
这一大块文字看起来很糟糕,而且没有缩进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:
    """
但这会在输出的开头引入空白

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

是否可以在不打印每行的情况下执行此操作?e、 g

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"

以上是我希望代码的显示方式,而无需在每一行上进行打印。

相邻的字符串文本会自动连接起来

>>> 'x' 'y'
'xy'

我经常对很长的字符串执行此操作。

标准库中有用于此操作的工具:

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:
            """)

我通常会这样做:

print '\n'.join([
    '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:',
     ])

因为它允许(相对)轻松地重新排列和添加新行。

所以这类似于在每行上进行打印。我仍然需要在每行末尾添加一个\n-我希望通过使用“”来避免此情况“从视觉上看,它就像每一行上的打印,但在内部,它更像是一个字符串。我认为campos.ddc的答案最符合您的要求,但需要对字符串进行运行时后处理。这违反了python样式手册中的一行不超过79个字符的规则。Woops,我在运行中的错误,并已更正。额外的标点符号(The\)是我工作中的编码标准遗留下来的,他们希望我们在其中设置一行延续。它们对于实际的代码是不必要的。你到底为什么要在不需要的时候使用反斜杠连续体呢!哎呀。我已经习惯了,不过老实说,我认为这只是一个上级留下来的印象,他们认为这让阅读更容易。不管怎样我都很高兴。不管怎样,现在就把它们移除。
print '\n'.join([
    '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:',
     ])