python判断身份证号日期不合法
时间: 2023-10-25 14:06:54 浏览: 204
可以使用Python的datetime模块来判断身份证号中的日期是否合法,具体实现可以参考以下代码:
```python
import datetime
def is_valid_date(date_str):
try:
datetime.datetime.strptime(date_str, '%Y%m%d')
return True
except ValueError:
return False
id_card = '110101199003075872'
birth_date_str = id_card[6:14]
if is_valid_date(birth_date_str):
print('身份证号中的出生日期合法')
else:
print('身份证号中的出生日期不合法')
```
以上代码中,我们首先定义了一个`is_valid_date`函数,该函数用来判断一个日期字符串是否合法,如果合法则返回True,否则返回False。然后我们从身份证号中提取出出生日期,并调用`is_valid_date`函数来判断其是否合法。如果合法,则输出`身份证号中的出生日期合法`,否则输出`身份证号中的出生日期不合法`。
相关问题
从键盘输入某个人的身份证号,首先判断是否是一个合法的身份证号。如果是合法的身份证号,输出这个人的出生日期及性别;如果不是合法的身份证号,提示用户重新输入。若输入三次仍然为非法的身份证号,则结束输入,并输出信息“输入的身份证号无法识别”。用python
在Python中,你可以使用正则表达式来验证身份证号码的合法性,并通过ID号码的最后两位来确定性别和出生日期。以下是一个简单的实现示例:
```python
import re
def validate_id(id_num):
# 正则表达式匹配中国大陆的18位身份证号码
regex = r'^\d{15}(?:\d{2}[0-9Xx])?|^\d{17}(\d|x)$'
if not re.match(regex, id_num):
return False
# 判断性别,最后一位是奇数代表男性,偶数代表女性
sex = '男' if int(id_num[-2]) % 2 else '女'
# 出生年月日计算,前六位是年份,接下来的两个是月份,最后两个是日子,注意需要转换
birth_date = f"{id_num[:6]}-{id_num[6:8]}-{id_num[8:10]}"
return sex, birth_date
def get_valid_id():
for _ in range(3):
id_num = input("请输入身份证号码:")
is_valid, result = validate_id(id_num)
if is_valid:
print(f"身份证号合法,出生日期:{result},性别:{sex}")
break
else:
print("输入的身份证号无效,请重新输入。")
else:
print("输入的身份证号无法识别,程序结束。")
get_valid_id()
```
在这个脚本中,我们首先定义了一个`validate_id`函数来检查输入的身份证号码是否符合规则,然后在`get_valid_id`函数里循环请求用户输入,直到输入一个有效的身份证号码为止。如果连续三次输入都无效,就会显示相应的错误消息。
身份证号处理python
身份证号是一种特殊的字符串,通常需要进行一些处理和验证。下面是一些常见的身份证号处理方法:
1. 验证身份证号是否合法。可以使用 Python 的第三方库 `id-validator` 进行验证。安装方法:`pip install id-validator`。使用方法如下:
```python
from id_validator import validator
id_number = '110101199003074036'
valid = validator.is_valid(id_number)
print(valid) # True
```
2. 获取身份证号的出生日期。可以通过身份证号的前六位来获取出生日期。代码如下:
```python
id_number = '110101199003074036'
birth_date = id_number[6:14]
print(birth_date) # '19900307'
```
3. 获取身份证号的性别。可以通过身份证号的倒数第二位来判断性别,偶数为女性,奇数为男性。代码如下:
```python
id_number = '110101199003074036'
gender = int(id_number[-2])
if gender % 2 == 0:
print('女性')
else:
print('男性')
```
4. 获取身份证号的地址信息。可以通过身份证号的前六位来获取地址信息。需要使用第三方库 `id-parser`。安装方法:`pip install id-parser`。使用方法如下:
```python
from id_parser import Parser
id_number = '110101199003074036'
parser = Parser()
info = parser.parse(id_number)
address = info.area.name
print(address) # '北京市东城区'
```
以上是一些处理身份证号的常见方法,可以根据具体需求进行选择。
阅读全文