我需要用python来检测excle表内的数据,其中有一栏为身份证号,我需要检测身份证号是否填写正确,并且自动提取每一行其他信息与出生年月与性别,并输出到一个新的表格当中
时间: 2024-05-05 20:17:41 浏览: 61
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
你可以使用Python的第三方库xlrd和xlwt来读取和写入Excel文件。以下是一个检测身份证号是否填写正确,并提取出生年月和性别的示例代码:
```python
import xlrd
import xlwt
import re
from datetime import datetime
# 打开Excel文件
workbook = xlrd.open_workbook('example.xlsx')
sheet = workbook.sheet_by_index(0)
# 创建新的Excel文件
output_workbook = xlwt.Workbook()
output_sheet = output_workbook.add_sheet('output')
# 定义正则表达式匹配身份证号
id_pattern = re.compile(r'^\d{17}[\d|X]$')
# 遍历每一行数据
for row_index in range(sheet.nrows):
row = sheet.row_values(row_index)
# 检查身份证号是否填写正确
id_num = row[1]
if not id_pattern.match(id_num):
print(f'Error: invalid ID number in row {row_index+1}')
continue
# 提取出生年月和性别
birth_year = int(id_num[6:10])
birth_month = int(id_num[10:12])
birth_day = int(id_num[12:14])
gender = '男' if int(id_num[16]) % 2 == 1 else '女'
# 将提取的数据写入新的Excel文件
output_sheet.write(row_index, 0, row[0])
output_sheet.write(row_index, 1, id_num)
output_sheet.write(row_index, 2, birth_year)
output_sheet.write(row_index, 3, birth_month)
output_sheet.write(row_index, 4, birth_day)
output_sheet.write(row_index, 5, gender)
# 保存新的Excel文件
output_workbook.save('output.xlsx')
```
在这个示例代码中,我们使用了正则表达式模块re来匹配身份证号的格式,然后使用字符串切片操作提取出生年月和性别。最后,我们使用xlwt库将提取的数据写入新的Excel文件中。
请注意,这个示例代码仅适用于18位身份证号。如果你需要处理其他类型的身份证号,你需要相应地修改正则表达式和提取数据的代码。
阅读全文