Dans le processus de traitement des données, il est souvent nécessaire d'extraire des informations dans un format spécifique à partir d'un texte. En tant qu’information personnelle relativement courante, le numéro d’identification est souvent utilisé dans le traitement des données. Vous pouvez utiliser des expressions régulières Python pour extraire facilement le numéro d'identification et effectuer certaines vérifications.
Le numéro de carte d'identité est composé de 18 chiffres, dont la région, la date de naissance et le code de vérification dans le numéro d'identification. En Python, nous pouvons utiliser la fonction d'expression régulière du module re pour extraire le numéro d'identification.
Tout d'abord, nous devons préparer un fichier texte contenant le numéro d'identification. Supposons que le fichier s'appelle id_list.txt et que chaque ligne contient un numéro d'identification.
Ensuite, nous pouvons utiliser le code suivant pour lire le fichier et extraire le numéro d'identification :
import re # 读取文件 with open('id_list.txt', 'r') as f: content = f.read() # 使用正则表达式匹配身份证号码 pattern = r'd{18}|(d{17}(d|X|x))' id_list = re.findall(pattern, content)
Dans le code ci-dessus, nous avons utilisé l'expression régulière r'd{18}|(d{17} (d |X|x))'
pour correspondre au numéro d'identification. Il y a deux parties dans cette expression régulière, à savoir d{18}
et d{17}(d|X|x)
. Parmi eux, d{18}
signifie correspondre à 18 chiffres, c'est-à-dire le numéro d'identification complet ; d{17}(d|X|x)
signifie correspondre à 17 chiffres et ; Le dernier chiffre peut être des chiffres ou des lettres X/x du numéro d'identification. En utilisant le symbole |
pour relier les deux parties, nous pouvons faire correspondre le numéro d'identification complet et le numéro d'identification avec le code de contrôle en même temps. r'd{18}|(d{17}(d|X|x))'
来匹配身份证号码。该正则表达式中有两部分,分别为d{18}
和d{17}(d|X|x)
。其中,d{18}
表示匹配18位数字,即完整的身份证号码;d{17}(d|X|x)
表示匹配17位数字和最后一位可能为数字或字母X/x的身份证号码。通过使用|
符号连接两部分,我们可以同时匹配完整的身份证号码和带校验码的身份证号码。
使用re.findall
函数可以在文本中匹配所有符合正则表达式的字符串,并返回匹配结果的列表。在这里,我们将提取到的身份证号码列表保存到id_list
re.findall
pour faire correspondre toutes les chaînes qui correspondent à l'expression régulière dans le texte et renvoyer une liste de résultats correspondants. Ici, nous enregistrons la liste de numéros d'identification extraite dans la variable id_list
. Ensuite, nous pouvons vérifier le numéro d'identification extrait. Les règles de vérification des numéros de carte d'identité peuvent faire référence aux normes pertinentes, qui sont brièvement présentées ici. Le code de vérification est le dernier chiffre ou lettre X/x du numéro d'identification. Il est dérivé des 17 premiers chiffres grâce à un certain algorithme. La méthode de calcul du code de contrôle est la suivante : # 校验码计算 def check_code(id_num: str) -> str: if len(id_num) == 18: factor_list = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] check_list = list(id_num[:-1]) check_sum = sum([int(check_list[i]) * factor_list[i] for i in range(17)]) check_num = (12 - check_sum % 11) % 11 if check_num == 0: return '1' elif check_num == 1: return '0' elif check_num == 2: return 'X' else: return str(12 - check_num) else: return ''
# 进行校验,并输出结果 valid_id_list = [] for id_num in id_list: # 计算校验码 code = check_code(id_num[0]) if code and code == id_num[0][-1]: valid_id_list.append(id_num[0]) print(valid_id_list)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!