Python格式化大文本
在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:-/
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:',
])