输出大量需要格式化的多行字符串的pythonic方法是什么?

时间:2015-06-10 02:11:48

标签: python string format writing

我的python应用程序是一个预处理器;我的输出是另一个应用程序的输入。另一个应用程序具有各种多行部分标题,这些标题根据版本进行细微更改。我的申请填写了各个部分。

我现在的#34;打印机"定义了几个带有格式替换的多行字符串。 print语句将替换为write:

def generate():
    header="""
        Multi-line header
        Symbols that form a logo
        changes  with version
        """
    anotherSection="""
        this section header 
        is shorter
        (
            {myFiller}
        )
        """

    print header
    print anotherSection.format(myFiller = "{}{}{}".format(myFiller.content))
    print anotherSection2.format(myFiller = [x.strip() for x in myFiller.content2])
    print anotherSection3.format(myFiller = myFiller3.content)

" myFiller"是对具有原始数据的类的调用,可能需要根据该部分对其进行格式化。

对于让一堆多行字符串混淆实际"打印"有些事情并不合适。 .format(.format)的东西也可能有点难以阅读。

关于如何构建这个的任何想法?

我一直在玩一个字符串字典,但我不喜欢打印语句界面(不是我在个别印刷语句中出售的:

format_requirements={'header': """.....""",'section':"""...."""}

print format_requirements['header'].format(....)

版本I" m倾向于使用每个部分字符串定义的函数。这对于版本更改很有用,但我不确定它的走法(我主要关注的是将生成函数与其他一些函数混合在一起):

def header(version):
    header=""
    if version == v1:
        header="""...."""
    if version ==v2:
        header="""..."""
    return header
def section(type):
   section="""...."""
   return section

print header(v1).format(....)
print section

我还玩过课程,迭代列表和其他一些东西。在阅读了风格指南(推动我进入.format()方向)和各种帖子之后,我来到这里寻找更加诡计和易读的东西。

我愿意接受任何指导和方法来构建它。

谢谢!

1 个答案:

答案 0 :(得分:0)

我会选择一个将原始输入保存在._data属性中的类,并且有方法为每个“version”输出格式正确的字符串

class MyStringFormatter(object):

    def __init__(header=None, content=None):
        self._data = {'header': header, 'content': content}

    def version_one(self):
        # format strings here
        return stringv1