Dalam proses pemprosesan data, selalunya perlu untuk mengekstrak maklumat dalam format tertentu daripada teks. Sebagai sekeping maklumat peribadi yang agak biasa, nombor ID sering digunakan dalam pemprosesan data. Anda boleh menggunakan ungkapan biasa Python untuk mengekstrak nombor ID dengan mudah dan melakukan pengesahan tertentu padanya.
Nombor ID terdiri daripada 18 digit, termasuk wilayah, tarikh lahir dan kod pengesahan dalam nombor ID. Dalam Python, kita boleh menggunakan fungsi ekspresi biasa modul semula untuk mengekstrak nombor ID.
Pertama, kita perlu menyediakan fail teks yang mengandungi nombor ID. Andaikan bahawa fail itu dinamakan id_list.txt, dan setiap baris mengandungi nombor ID.
Seterusnya, kami boleh menggunakan kod berikut untuk membaca fail dan mengekstrak nombor ID:
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)
Dalam kod di atas, kami menggunakan ungkapan biasa r'd{18}|(d{17}(d|X|x))'
untuk memadankan Nombor kad ID . Terdapat dua bahagian dalam ungkapan biasa ini, iaitu d{18}
dan d{17}(d|X|x)
. Antaranya, d{18}
bermaksud memadankan 18 digit iaitu nombor ID lengkap d{17}(d|X|x)
bermaksud memadankan 17 digit dan digit terakhir mungkin nombor atau huruf X/x. Dengan menyambungkan dua bahagian menggunakan simbol |
, kami boleh memadankan kedua-dua nombor ID lengkap dan nombor ID dengan kod pengesahan pada masa yang sama.
Gunakan fungsi re.findall
untuk memadankan semua rentetan yang sepadan dengan ungkapan biasa dalam teks dan mengembalikan senarai hasil yang sepadan. Di sini, kami menyimpan senarai nombor kad ID yang diekstrak ke dalam pembolehubah id_list
.
Seterusnya, kami boleh mengesahkan nombor ID yang diekstrak. Peraturan pengesahan nombor kad pengenalan boleh merujuk kepada piawaian yang berkaitan, yang diperkenalkan secara ringkas di sini.
Kod semak ialah digit terakhir atau huruf X/x dalam nombor ID Ia diperoleh daripada 17 digit pertama melalui algoritma tertentu. Kaedah pengiraan kod semak adalah seperti berikut:
# 校验码计算 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)
Atas ialah kandungan terperinci Cara menggunakan ungkapan biasa Python untuk mengekstrak nombor ID. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!