2. 报告结构规定

作者: 数据成长之路 | 来源:发表于2018-07-26 15:29 被阅读13次

    知识基础

    • Python类的基础了解

    学习目标

    • 使用Python类构造文章结构

    1. 文章建立

    首先,我们先建立基础的文章组成构建:文档,章,节。

    class Document(object):
        def __init__(self):
            # 文章标题
            self.title = None
            # 子标题
            self.subtitle = None
            # 前言
            self.foreword = None
            # 章节
            self.chapters = []
    
    class Chapter(Document):
        def __init__(self):
            super(Chapter, self).__init__()
            # 章节内表格
            self.table = None
            # 章节内有多个图表时
            self.tables = []
            # 文本内容
            self.content = None
            # 图片
            self.image = None
            # 多个图片
            self.images = []
            
    # 子章节定义可以直接使用Chapter定义,利用了Python类的继承,也为之后自定义子章节提供了留白
    class Subchapter(Chapter):
        pass
    

    2. 建立结构

    document = Document()
    

    以上我们对Document类做了基础的定义,下一步我们需要根据所要制作报告确定Document的结构,假如我们使用Example 1中的报告,报告由5个章节组成,其中最后一个总结的章节无标题,每个章节中有至多5个子章节,子章节中有单个图片和表格,章节中会有两个位置有文字

    基于内容定制Chapter

    以上我们对Document类做了基础的定义,下一步我们需要根据所要制作报告确定Document的结构,假如我们使用Example 1中的报告,报告由10个App的介绍组成,而每个App的内容都依次为:标题、Applogo、说明文字、说明图片、榜单变动,那么我们可以定制Chapter类的组成结构

    class Chapter(Document):
        def __init__(self, subchapter_number=0):
            """
            subchapter_number : 子章节数
            """
            super(Chapter, self).__init__()
            self.content1 = None
            self.table = None
            # 图表会先做出图片形式,此处保存图片的路径
            self.image = None
            self.content2 = None
            self.rank_list_change = None
            self.subchapters= [Chapter(subchapter_number=0) for i in range(subchapter_number)]
            
    

    为章节加入 添加图片的方法

    使用self.image或者self.images保存的为图片路径,为了方便我们可以直接把matplotlib的fig直接加入chapter中,只需要设定加入规则

    class Chapter(Document):
        def __init__(self, subchapter_number=0, number=''):
            """
            subchapter_number : 子章节数
            number : 章节编号,基于文档结构生成,需要是唯一的
            """
            super(Chapter, self).__init__()
            self.content1 = None
            self.table = None
            # 图表会先做出图片形式,此处保存图片的路径
            self.image = None
            self.content2 = None
            self.rank_list_change = None
            self.number = number
            self.chapters= [Chapter(subchapter_number=0, number="{}_subchapter{}".format(self.number, i)) 
                               for i in range(subchapter_number)]
            # 设定图片保存的链接
            self.image_path = './image/'
            
    
        def set_image(self, fig):
            image_filename = '{}{}.png'.format(self.image_path, self.number)
            fig.savefig(image_filename, dpi=160, bbox_inches='tight')
            self.image = image_filename
    
    # 我们知道报告中有5个章节,每个章节至多有4个子章节
    # 此处代码可以加入document的__init__函数中,在实例化过程中直接完成
    document = Document()
    for i in range(5):
        document.chapters.append(Chapter(subchapter_number=4, number="chapter{}".format(i)))
    
    print(document.chapters[3].chapters[0].number)
    
    chapter3_subchapter0
    

    添加函数直接打印document文档结构

    def print_structure(chapter, deep):
        if chapter.chapters:
            for subchapter in chapter.chapters:
                print('--'*deep+subchapter.number)
                print_structure(subchapter, deep+1)
        else:
            return
    
    ## print_structure(document, 0)
    

    把此文件中做的报告结构保存入./ExampleCode/models.py
    并且把print_structure方法放入Document

    from ExampleCode.models import Document
    
    document = Document()
    document.print_structure(0)
    
    chapter0
    --chapter0_subchapter0
    --chapter0_subchapter1
    --chapter0_subchapter2
    --chapter0_subchapter3
    chapter1
    --chapter1_subchapter0
    --chapter1_subchapter1
    --chapter1_subchapter2
    --chapter1_subchapter3
    chapter2
    --chapter2_subchapter0
    --chapter2_subchapter1
    --chapter2_subchapter2
    --chapter2_subchapter3
    chapter3
    --chapter3_subchapter0
    --chapter3_subchapter1
    --chapter3_subchapter2
    --chapter3_subchapter3
    chapter4
    --chapter4_subchapter0
    --chapter4_subchapter1
    --chapter4_subchapter2
    --chapter4_subchapter3
    

    相关文章

      网友评论

        本文标题:2. 报告结构规定

        本文链接:https://www.haomeiwen.com/subject/tyebmftx.html