python - 创建具有多个条件的递归 Python 函数
问题描述
背景:我正在尝试编写一个函数,从我从 PDF 转换的纯文本文档中解析消息数据。我已经将数据解析并清理到一个方便的点,以便识别每一行相关文本并用适当的类别标记。类别是(Author, Sent, Body, Attachments)
。
问题:我正在尝试编写一个函数,将数据分离成单独的消息。例如,在它处理了属于每个类别的一行(或多行)之后,它会输出一个单一的消息,然后在再次遇到元组的开头时重复该过程。换句话说,一旦它读取Author
then Sent
then Body
then 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?
我的直觉告诉我,我需要创建一个递归函数来完成此任务,但我试图想出一些东西却碰壁了。谁能指出我正确的方向?
非常感谢。
解决方案
推荐阅读
- jenkins - Github PR 触发多个 Jenkins 作业但只报告最后一个作业的状态
- windows - 如何检查我正在运行哪个版本的 WSL2?
- c++ - arma::SpMat
在 RcppArmadillo 函数中输入 - go - 在 kubernetes 集群中获取 Pod 和 Node 的事件毫秒级精度
- android - android 11 kotlin 中的包可见性
- css - 加载后将 div 保留在视口中
- python - 与 ROS 点云的距离太慢,如何优化?
- c++ - 在其他几个 cpp 文件中实例化一个类并使用它的方法
- reactjs - 为什么运行构建后反应路由器不起作用?
- angular - 过滤器包含在 on() ngrx reducer 中