身份证相同的前提下,长银行名覆盖短银行名

        同学做建筑劳务,要为工人办理退税登记,由于信息采集混乱,导致同一位工人导入的银行信息不相同,故要在身份证相同的前提下,长银行名覆盖短银行名(同一个人,只退税到同一张银行卡里)。由于人员名单很长,人工筛选费时费力,我用如下代码助其解决问题:

'''
同学:"绿色是完整信息,要覆盖橙色,主要是覆盖开户行"
换成人话:身份证及人名相同的前提下,长银行名覆盖短银行名
'''
#读取文件,并将各行按空格存入列表中
import os
路径文件=r'G:\Xct\python\名单.txt'
#上面这句以后做成类的形参
列表=[]
with open(路径文件,encoding='utf-8')as 文件:
    for 行 in 文件.readlines():
        字=str(行).split()
        列表.append(字)
print (列表)
#将内嵌的小列表中的身份证号提取到身份证列表中
身份证列表=[]
for 列表变量 in range(0,len(列表)):
    #print (列表[列表变量][0])
    身份证列表.append(列表[列表变量][0])
#print (身份证列表)
#对身份证列表进行重复性筛选
for 查重索引 in range(0,len(身份证列表)):
    for 被查索引 in range(0,len(身份证列表)):
        #用双重循环打开大小嵌套列表
        #以身份证号码为识别标志,遍历所有嵌套列表,查询重名人员
        if 身份证列表[查重索引]==身份证列表[被查索引]:
            #查找重名人员中,银行名称较长的那个,并将所有银行名改为较长的那个
            if len(列表[查重索引][-1])>len(列表[被查索引][-1]):
                #用print语句先验证查询结果及修改结果的正确性
                print (f'第{查重索引}号人员:{列表[查重索引][1]}与第{被查索引}号{列表[被查索引][1]}存在'
                       f'重复\n其中,银行名比较长的是:第{查重索引}号,应改成的银行是:{列表[查重索引][-1]}')
                正确银行名=列表[查重索引][-1]
                列表[被查索引][-1]=正确银行名
                print (f'第{查重索引}号银行名={列表[查重索引][-1]}')
                print(f'第{被查索引}号银行名={列表[被查索引][-1]}')
            elif len(列表[查重索引][-1])<len(列表[被查索引][-1]):
                print(f'第{查重索引}号人员:{列表[查重索引][1]}与第{被查索引}号{列表[被查索引][1]}存在'
                      f'重复\n其中,银行名比较长的是:第{被查索引}号,应改成的银行是:{列表[被查索引][-1]}')
                正确银行名 = 列表[被查索引][-1]
                列表[查重索引][-1] = 正确银行名
                print(f'第{查重索引}号银行名={列表[查重索引][-1]}')
                print(f'第{被查索引}号银行名={列表[被查索引][-1]}')
            #重复项列表.append(被查索引)
            #print(f'重复项的索引号是:{重复项列表}')
#输出更新后的名单
#先用print语句检验输出的正确性
for 变量 in range(0,len(列表)):
    print (f'{列表[变量]}')
#将列表内容输出到文本文件,然后手工用EXCEL导入
import sys
改后文件=(r'G:\Xct\python\名单(修改后).txt')
with open(改后文件,'w')as 文件:
    sys.stdout=文件
    #sys.stdout方法用于:将打印语句输出的内容写入指定的文本文件
    for 变量 in range(0, len(列表)):
        print(f'{列表[变量]}')
'''
写在最后的话:
虽然完成了“文本-分析-修改-输出”,但需要注意的是:
1,所处理的文本文件应做一定的预处理,尽量简化分析所需的逻辑,pyton打开文件时用UTF-8码,原因不明;
2,最后输出的文本文件也要做后处理,批量替换列表中的“[]”及“,”,导出时用GBK码;
3,最后导入EXCEL数据时,要记得将各列的字段类型改为“文本”,否则身份证号与账号将变成科学计数法
'''

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

将出东方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值