1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| def transfirm_cardId(id): """ 计算校验码(处理证件号码最后一位数据) :param id: 证件号码 :return: 校验码 """ WI = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1, ] VI = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2, ] AI = [] if len(id) == 18: id = id[0:-1] if len(id) == 17: S = 0 for i in id: AI.append(int(i)) for i in range(17): S = S + WI[i] * AI[i] remain = S % 11 return 'X' if remain == 2 else str(VI[remain])
def up_to_eighteen(card_id): """ 15位转18位 :param card_id: (字符串格式) :return: """ eighteen_card_id = str(card_id[0:6]) + '19' + str(card_id[6:15]) return eighteen_card_id + transfirm_cardId(eighteen_card_id)
def down_to_fifteen(card_id): """ 18位转15位 :param card_id:(字符串格式) :return: """ return card_id[0:6] + card_id[8:17]
if __name__ == '__main__': print(up_to_eighteen("441700680129516")) print(down_to_fifteen("44170019680129516X"))
|