workbook = openpyxlWorkbooksheet = workbookactivepath = rFgjtxt# 数据处理def process_datadata printdata# 定义文件读取函数def read_filefile_path with openfile_pathrb as file for line in file
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)
原文地址: http://www.cveoy.top/t/topic/i6Am 著作权归作者所有。请勿转载和采集!