Python 格式化大文本

问题描述 投票:0回答:5

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

大块文字看起来很糟糕,而且没有缩进 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 的推荐布局有什么想法吗?我希望保持它整洁且易于阅读。

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

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"

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

python string-formatting
5个回答
26
投票

标准库有这方面的工具:

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

0
投票

相邻的字符串文字会自动连接。

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

0
投票
print("first line\n"
      "second line\n"
      "first part of third line"
      "rest of third line\n")

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


0
投票

我通常会做这样的事情:

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:',
     ])

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


0
投票

文字=“”” 智能的 значительно меняют наш мир、делая его более удобным、эффективным 和 безопасным。 Они охватывают различные сферы жизни — от умных домов до городов и автомобилей, способствуя автоматизации процессов 和 улучшению качества жизни。 Использование интернета вещей (IoT)、искусственного интеллекта (AI) 和 других передовых технологий предоставляет новые возможности для оптимизации ресурсов 和 повышения удобства в повседневной жизни. Однако вместе с преимуществами приходят и вызовы, такие как вопросы безопасности данных, конфиденциальности и и высокие затраты на внедрение。 Важным является решение этих проблем для полноценного 和 безопасного внедрения технологий。 ”””

示例 вывода

打印(文本)

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.