创建具有多个条件的递归Python函数

时间:2018-12-19 18:12:36

标签: python recursion

背景:我正在尝试编写一个函数,该函数可以从我从PDF转换成的纯文本文档中解析消息数据。我已经解析并清理了数据,直到方便为止,以便识别出相关文本的每一行并用适当的类别标记。类别为(Author, Sent, Body, Attachments)

问题:我正在尝试编写一个将数据分离为单独消息的函数。例如,在处理了属于每个类别的一条线(或多条线)之后,它将输出一条奇异的消息,并在再次遇到元组的开头时重复该过程。换句话说,一旦它先读Author然后读Sent然后读Body然后读Attachments,当它再次看到Author时,它应该知道开始一条新消息。

我已经创建了一个变量next_category,正如其名称所示,该变量确定即将出现的行的类别。只要即将到来的类别的索引不是0,该函数就应该运行。当它的下一个类别是0时,应在新行上重复该操作,直到再次到达0,依此类推。

最后,在某种情况下,next_category可以等于None,在这种情况下,该功能应完全退出。

代码:

    def message_parse(thread_dict):
        categories = ('Author', 'Sent', 'Body', 'Attachments')
        category = None


        for line in range(len(thread_dict['data'])):
            # determine first word in line
            first_word = thread_dict['data'][line].split(' ')[0]

            try:
                # determine first word in upcoming line
                next_first = first_word = thread_dict['data'][line+1].split(' ')[0]
            except:
                next_first = None

            if next_first in categories:
                next_category = next_first

            if first_word in categories:
                category = first_word


                if category != None:
                    line_data = thread_dict['data'][line]
                    if not 'DRAFT' in line_data:
                        if line_data != 'EXC':
                            line_data = line_data.strip(category).strip(' ')

                        while next_first != None:    
                            if categories.index(next_category) != 0:
                                # do something?

我的直觉告诉我,我需要创建一个递归函数来完成此操作,但是我碰壁了,想出一些办法。谁能指出我正确的方向?

非常感谢。

0 个答案:

没有答案