Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan ungkapan biasa Python untuk mengekstrak nombor ID

Cara menggunakan ungkapan biasa Python untuk mengekstrak nombor ID

WBOY
WBOYasal
2023-06-22 10:35:264125semak imbas

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:

  1. Darab 17 digit pertama dengan pekali berat yang sepadan untuk mendapatkan 17 produk
  2. Tambahkan 17 produk untuk mendapatkan jumlah ;
  3. Bahagikan jumlah dengan 11 untuk mendapatkan baki;
  4. Dapatkan kod semak berdasarkan baki Surat-menyurat khusus adalah seperti berikut: apabila bakinya ialah 0, kod semak ialah 1. apabila bakinya ialah 1 , kod semak ialah 0;
Berikut ialah pelaksanaan kod Python bagi kod semak:

# 校验码计算
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 ''

Dalam kod di atas, kami mentakrifkan fungsi yang dipanggil check_code untuk mengira kod semak nombor kad ID. Parameter fungsi ialah nombor ID, dan nilai pulangan ialah kod pengesahan.

Akhir sekali, kami boleh mengesahkan nombor ID yang diekstrak dalam gelung dan hanya mengekalkan nombor ID dengan kod pengesahan yang betul:

# 进行校验,并输出结果
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)

Dalam kod di atas, kami menentukan Senarai kosong bernama valid_id_list ialah digunakan untuk menyimpan nombor ID dengan kod pengesahan yang betul. Gunakan gelung untuk melintasi semua nombor ID yang diekstrak dan mengira kod semakannya Jika kod semakan adalah sama dengan kod semakan dalam nombor ID yang diekstrak, tambahkan nombor ID pada valid_id_list. Akhir sekali, kami mengeluarkan valid_id_list untuk mendapatkan senarai nombor ID dengan kod pengesahan yang betul.

Secara amnya, menggunakan modul semula Python dan ungkapan biasa boleh dengan mudah mengekstrak nombor ID daripada teks, dan ia juga boleh disahkan pada tahap tertentu. Ini sangat membantu untuk memproses maklumat berformat seperti nombor ID.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn