python身份证号升位
时间: 2023-11-03 15:59:09 浏览: 80
身份证号升位是指将15位的身份证号码转换为18位的身份证号码。具体步骤如下:
1. 将身份证号码的前6位(即地区码)补上19,得到17位数的字符串。
2. 将身份证号码的第7到12位(即出生年月日)分别插入到刚刚得到的17位数的字符串中。
3. 将刚刚得到的17位数的每一位乘以对应的权重因子并求和,得到一个结果。
4. 将结果除以11,得到一个余数。
5. 根据余数查表得到对应的校验码。
6. 将校验码加到刚刚得到的17位数的末尾,得到18位身份证号码。
下面是Python代码实现身份证号升位的过程:
```python
def convert_id_to_18(id):
if len(id) == 15:
id = id[:6] + '19' + id[6:]
weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
factors = [int(c) * w for c, w in zip(id, weights)]
check_code = '10X98765432'[sum(factors) % 11]
return id + check_code
else:
return id
```
你可以调用该函数将15位身份证号码转换为18位身份证号码,如下所示:
```python
id = '110101800101234' # 15位身份证号码
new_id = convert_id_to_18(id)
print(new_id) # 输出18位身份证号码
```