首页 VIN车辆识别代码查询 VIN车辆识别代码查询示例代码 VIN车辆识别码校验规则代码[Python]

VIN车辆识别码校验规则代码示例代码Python

作者: 阅读数:86 上传时间:2025-03-21

VIN车辆识别码校验规则代码

import re
def check(vin):    
    # 字符到数字的映射
    char_to_num = {
        '0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,
        'A':1 ,'B':2, 'C':3, 'D':4, 'E':5, 'F':6, 'G':7, 'H':8, 'J':1,
        'K':2, 'L':3, 'M':4, 'N':5, 'P':7, 'R':9, 'S':2, 'T':3, 'U':4, 'V':5, 'W':6, 
        'X':7, 'Y':8, 'Z':9
    }
    # 加权系数
    weights = [8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2]
    
    vin = vin.upper()
    if not re.match(r'^[1-9A-Z][0-9A-Z]{16}$', vin) or re.match(r'^([0-9A-Z])1{16}$', vin):
        return False
    
    num = 0
    for i in range(17):
        char = vin[i]        
        num += char_to_num[char] * weights[i]
    remainder = num % 11
    check_digit = vin[8]
    if remainder < 10:
        valid_digit = str(remainder)
    else:
        valid_digit = 'X'
    return check_digit == valid_digit

vin = "LSGKR5AL3GA116839"
if check(vin):
    print(f"{vin} 是有效的VIN码。")
else:
    print(f"{vin} 不是有效的VIN码。")