import pandas as pd import openpyxl from datetime import datetime

path = r"F:\gj.txt"

定义按照邮件处理函数

def process_file_by_mailNumber(file_path): data = [] current_mailNumber = None current_data = {} opTimeStart = '' with open(file_path, 'r', encoding='utf-8') as file: for line in file: linesplit = line.split('|') mailNumber = linesplit[0]

        if mailNumber == current_mailNumber:
            try:
                if linesplit[3] == "203":
                    sjopTimeStart = linesplit[1]
                    current_data["机构号"] = linesplit[2]
                    current_data["机构名"] = linesplit[5]
                if (linesplit[2] == "21000") & (linesplit[3] == "352"):
                    clopTimeStart = linesplit[1]
                    current_data["处理中心解车时间"] = clopTimeStart
                if (linesplit[2] == "21000") & (linesplit[3] == "389"):
                    clopTimeEnd = linesplit[1]
                    current_data["处理中心封车时间"] = clopTimeEnd
                    start_datetime = datetime.strptime(clopTimeStart, '%Y-%m-%d %H:%M:%S')
                    end_datetime = datetime.strptime(clopTimeEnd, '%Y-%m-%d %H:%M:%S')
                    hour_difference = (end_datetime - start_datetime).total_seconds() / 3600
                    current_data["处理时长"] = hour_difference

                if (linesplit[2][:3] == "215") & (linesplit[3] == "306"):
                    tdopTimeStart = linesplit[1]
                    current_data["到达时间"] = tdopTimeStart
                if (linesplit[2][:3] == "215") and (linesplit[3] == "706" or linesplit[3] == "711"):
                    tdopTimeEnd = linesplit[1]
                    current_data["妥投时间"] = tdopTimeStart
                    start_datetime = datetime.strptime(tdopTimeStart, '%Y-%m-%d %H:%M:%S')
                    end_datetime = datetime.strptime(tdopTimeEnd, '%Y-%m-%d %H:%M:%S')
                    hour_difference = (end_datetime - start_datetime).total_seconds() / 3600
                    current_data["投递时长"] = hour_difference
                    start_datetime = datetime.strptime(sjopTimeStart, '%Y-%m-%d %H:%M:%S')
                    day_difference = (end_datetime - start_datetime).total_seconds() / 3600 * 24
                    current_data["在途时长"] = day_difference
                if (linesplit[2] == "21506000") & (linesplit[3] == "999"):
                    split_str = linesplit[16].split("</br>")

                    current_data["类别"] = split_str[0].split(":")[1]
                    current_data["环节"] = split_str[3].strip("[]")
                    current_data["验单号"] = split_str[1].split(":")[1]
            except Exception as e:
                # 处理其他异常的代码块
                print("发生了异常:", mailNumber + str(e))
                continue
        else:
            if current_data:
                data.append(current_data)
            current_mailNumber = mailNumber
            current_data = {}
            current_data["邮件编号"] = mailNumber
            clopTimeStart = ''
            clopTimeEnd = ''
            sjopTimeStart = ''
            opOrgCode = ''
            opOrgSimpleName = ''
            tdopTimeEnd = ''
            tdopTimeStart = ''

return data

data = process_file_by_mailNumber(path) df = pd.DataFrame(data) df.to_excel("output.xlsx", index=False)

workbook = openpyxlWorkbooksheet = workbookactivepath = rFgjtxt# 数据处理def process_datadata printdata# 定义文件读取函数def read_filefile_path with openfile_pathrb as file for line in file

原文地址: https://www.cveoy.top/t/topic/i6Am 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录