imei验证码计算+清洗数据

该代码段实现了一个计算14位IMEI校验码的函数,并用于清洗文件中电话号码和IMEI码的数据。当IMEI码为14位时,根据算法计算并添加校验位;当IMEI码已为15位但第15位不正确时,用计算的校验位替换。文件处理完成后,将清洗后的数据写入新的文件。
摘要由CSDN通过智能技术生成

获得imei第15位检验码


def getimei(imei):
    if len(imei) == 14:
        imeiChar = imei
        sum1=0
        sum2=0
        for i in range(len(imeiChar)):
            i = int(i)
            if i%2!=0:
                a=int(imeiChar[i])*2
                if len(str(a))>1:
                    a = str(a)
                    temp=0
                    for i1 in range(len(a)):

                        temp += int(a[i1])                        
                    sum1 += temp

                else:
                    sum1 += int(a)
                i += 1
            elif i%2==0:
                b = int(imeiChar[i])
                sum2 +=b
                i += 1
        sum = sum1+sum2
        #print('sum------',sum)
        sum = str(sum)
        for i in range(len(sum)):
            if i%2!=0:
                if sum[1]=='0':
                    b=0
                    #print('校验码是:',b)
                    #imei=imei+str(b)
                    #print(imei)
                elif sum[1] !='0':
                    b=10-int(sum[1])
                    #print('校验码是:', b)
                    #imei=imei+str(b)
                    #print(imei)
        return b


文件中,格式为:11位数电话号码,imei码(有14位,也有15,也有16)
现在需要算出15位的imei验证码,并且将所有imei码全部清洗为15位数



out = open(u'update-imei15-1.txt', 'w')
with open("20200810_update.csv","r") as f:
#with open("t.txt","r") as f:
    for line in f:
        data = line.split(",")
        try:
            
            if len(data[0])==11 and len(data[1])==14:
                data[1]=data[1][:14]+str(getimei(data[1][:14]))
            elif len(data[0])==11 and len(data[1])>=15:
                if data[1][14]!=getimei(data[1][:14]):
                    data[1]=data[1][:14]+str(getimei(data[1][:14]))
            else:
                continue
            #print(data[0]+','+data[1])
            out.writelines(data[0]+','+data[1]+'\n')
        except:
            
            pass

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值