import re
import pandas as pd

data_dict = {}

with open('file_path', 'r', encoding='utf-8') as file:
    next(file)
    for line in file:
        linesplit = line.split('|')
        if not linesplit[0].isdigit():
            continue
        mailNumber = linesplit[0]  # 分离出邮件号
        if mailNumber not in data_dict:
            data = {'邮件编号': mailNumber, '逾限代码': None, '逾限原因': None, '逾限计划邮路': None, '异常': None,
                    '验单机构号': None, '验单类别': None, '验单号': None, '验单环节': None}
            data_dict[mailNumber] = data
        else:
            data = data_dict[mailNumber]
        
        try:
            if linesplit[3] == '980' or linesplit[3] == '981' or linesplit[3] == '982' or linesplit[3] == '983' or linesplit[3] == '984' or linesplit[3] == '985' or linesplit[3] == '986':
                data['逾限代码'] = linesplit[3]
                data['逾限原因'] = linesplit[4]
                for field in linesplit:
                    if field.startswith('邮路') or field.startswith('交接对象') or field.startswith('计划出口邮路'):
                        split_str = field.split(',')
                        data['逾限计划邮路'] = split_str[0].split(':')[1]
                        
            if linesplit[3] == '999':
                for field in linesplit:
                    if field.startswith('异常名称'):
                        matches = re.findall(r'异常名称:(.*?)验单号:(.*?)验达局:(.*?)[(.*?)]', field)
                        if matches:
                            data['异常'] = linesplit[3]
                            data['验单机构号'] = linesplit[2]
                            data['验单类别'] = matches[0][0].replace('</br>', '')
                            data['验单号'] = matches[0][1].replace('</br>', '')
                            data['验单环节'] = matches[0][3].replace('</br>', '')
        except Exception as e:
            print('报错' + str(e) + line)

df = pd.DataFrame(data_dict.values())
df.to_excel('data92.xlsx', index=False)

这段代码使用了字典来存储数据,邮件号作为键,数据字典作为值。当遇到重复的邮件号时,程序会更新已有字典的值,而不是创建新的条目。最后,程序将字典的值转换成DataFrame并保存到Excel文件中。

使用字典存储数据可以有效地处理重复数据的问题,确保最终结果的准确性。此外,代码中还包含异常处理,防止程序因错误数据而崩溃。

总结:

  • 使用字典存储数据,以邮件号作为键,可以方便地处理重复数据问题。
  • 遇到重复数据时,更新已有字典的值,而不是创建新的条目,确保数据的一致性。
  • 代码包含异常处理机制,防止程序因错误数据而崩溃。

优化建议:

  • 可以根据实际需求调整代码中的正则表达式,以匹配不同的数据格式。
  • 可以添加日志记录功能,以便更好地追踪数据处理过程。
  • 可以对代码进行单元测试,确保代码的质量和稳定性。
Python代码解析:邮件号重复数据覆盖处理

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

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