python身份证对照代码
时间: 2024-06-11 11:02:08 浏览: 173
Python身份证对照代码是一段用于校验身份证号码合法性的Python代码。以下是一个简单的身份证号码校验函数示例:
```python
def check_id(id):
if len(id) != 18:
return False
weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
check_code = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
sum = 0
for i in range(17):
sum += int(id[i]) * weight[i]
if check_code[sum % 11] == id[-1]:
return True
else:
return False
```
该函数接受一个字符串参数id,表示待校验的身份证号码。函数内部首先判断身份证号码长度是否为18位,如果不是,则直接返回False。接着定义一个权重数组weight和一个校验码数组check_code。然后使用循环计算身份证号码前17位数字的加权和,最后取余11得到校验码,并将其与身份证号码的最后一位比较。如果相同,则返回True,否则返回False。
相关问题
python中获取桌面的文件身份证码值对照表.txt,然后根据身份证码前六位值对比身份证码值对照表.txt编写程序,实现根据地址码对照表和身份证号码查询贵州省居民常住户口所在县的功能。
在Python中,首先你需要确保有一个名为`身份证码值对照表.txt`的文本文件,其中包含了你之前提到的地区和对应区县信息,每行应该是两个字段,如`520101 贵阳市市辖区`的形式。下面是一个基本的步骤来读取文件并实现查询功能:
1. 首先,打开并读取文件内容。如果你不确定文件的位置,可能需要使用`os.path`模块来定位文件路径。假设文件位于工作目录下:
```python
import os
def load_address_table(file_path):
with open(file_path, 'r') as file:
address_table = {line.strip().split()[0]: line.strip().split()[1] for line in file}
return address_table
address_table = load_address_table('身份证码值对照表.txt')
```
2. 创建一个函数来查询特定身份证号码的前六位对应的信息:
```python
def find_residence_county(identification_code):
if len(identification_code) == 6:
prefix = identification_code[:2]
if prefix in address_table:
county = address_table[prefix]
return f"贵州省{county}"
else:
return "无法找到匹配的地区信息,请确认输入的身份证前六位是否正确"
else:
return "请输入完整的六位身份证号码"
# 使用示例
identification_code = input("请输入身份证号码前六位:")
result = find_residence_county(identification_code)
print(result)
```
在这个例子中,`load_address_table`函数用于加载和解析文件内容,而`find_residence_county`函数接收用户输入的身份证前六位,根据映射表查询对应的县。
注意:这段代码假设文本文件已经按照预期格式排列,并且文件存在。在实际操作中,可能还需要加入异常处理来处理文件不存在、读取失败等可能出现的问题。
1.身份证归属地查询 根据身份证码值对照表.txt文件编写程序,实现根据地址码对照表和身份证号码查询贵州省居民常住户口所在县的功能。样例如下图所示: python实现
在Python中,你可以通过读取CSV或TXT文件来实现身份证归属地的查询。首先,你需要有一个包含身份证号码和对应省份、城市、区县信息的数据结构,比如CSV文件:
```python
import csv
# 假设你有一个名为"address_code.csv"的文件,内容类似:
# 身份证号, 省份, 城市, 区县
# 520101**********0001, 贵州省,贵阳市,南明区
# ...
def get_residence(province_code, id_number):
# 读取csv文件
with open('address_code.csv', 'r') as f:
reader = csv.reader(f)
next(reader) # 跳过标题行
for row in reader:
if int(row[1]) == province_code and row[0] == id_number[:6]: # 只比较前六位身份证号码,后四位是校验码
return row[2] # 返回区县名
return None # 如果没找到匹配,返回None
# 示例使用
id_number = "520101**********0001"
province_code = 520100 # 贵州省对应的行政区划代码
residence = get_residence(province_code, id_number)
print("身份证{}在贵州省的常住地是:{}".format(id_number, residence))
阅读全文