Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie reguläre Python-Ausdrücke zum Extrahieren der ID-Nummer

So verwenden Sie reguläre Python-Ausdrücke zum Extrahieren der ID-Nummer

WBOY
WBOYOriginal
2023-06-22 10:35:264125Durchsuche

Bei der Datenverarbeitung ist es oft notwendig, Informationen in einem bestimmten Format aus Texten zu extrahieren. Als relativ häufig vorkommende persönliche Information wird die ID-Nummer häufig bei der Datenverarbeitung verwendet. Durch die Verwendung regulärer Python-Ausdrücke kann die ID-Nummer leicht extrahiert und bestimmte Überprüfungen durchgeführt werden.

Die ID-Nummer besteht aus 18 Ziffern, einschließlich der Region, des Geburtsdatums und des Bestätigungscodes in der ID-Nummer. In Python können wir die reguläre Ausdrucksfunktion des re-Moduls verwenden, um die ID-Nummer zu extrahieren.

Zuerst müssen wir eine Textdatei mit der ID-Nummer vorbereiten. Gehen Sie davon aus, dass die Datei den Namen id_list.txt trägt und jede Zeile eine ID-Nummer enthält.

Als nächstes können wir den folgenden Code verwenden, um die Datei zu lesen und die ID-Nummer zu extrahieren:

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)

Im obigen Code haben wir den regulären Ausdruck r'd{18}|(d{17} (d) verwendet |X|x))' passend zur ID-Nummer. Dieser reguläre Ausdruck besteht aus zwei Teilen, nämlich d{18} und d{17}(d|X|x). Unter diesen bedeutet d{18} eine Übereinstimmung mit 18 Ziffern, d. h. die vollständige ID-Nummer bedeutet eine Übereinstimmung mit 17 Ziffern und Die letzte Ziffer kann aus Zahlen oder Buchstaben X/x der ID-Nummer bestehen. Indem wir die beiden Teile mit dem Symbol | verbinden, können wir gleichzeitig die vollständige ID-Nummer und die ID-Nummer mit dem Prüfcode abgleichen. 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

Verwenden Sie die Funktion re.findall, um alle Zeichenfolgen abzugleichen, die dem regulären Ausdruck im Text entsprechen, und eine Liste übereinstimmender Ergebnisse zurückzugeben. Hier speichern wir die extrahierte ID-Nummernliste in der Variablen id_list.

Als nächstes können wir die extrahierte ID-Nummer überprüfen. Die Überprüfungsregeln für Personalausweisnummern können auf einschlägige Standards verweisen, die hier kurz vorgestellt werden.

Der Prüfcode ist die letzte Ziffer oder der letzte Buchstabe X/x in der ID-Nummer. Er wird durch einen bestimmten Algorithmus aus den ersten 17 Ziffern abgeleitet. Die Berechnungsmethode des Prüfcodes ist wie folgt:
  1. Multiplizieren Sie die ersten 17 Ziffern mit den entsprechenden Gewichtskoeffizienten, um 17 Produkte zu erhalten.
  2. Dividieren Sie die Summe durch 11, um A zu erhalten Rest;
  3. Erhalten Sie den Prüfcode basierend auf dem Rest. Die spezifische Entsprechung ist wie folgt: Wenn der Rest 0 ist, ist der Prüfcode 1, wenn der Rest 2 ist , der Prüfcode ist X /x; wenn der Rest 3-10 ist, ist der Prüfcode 11 minus dem Rest.

  4. Das Folgende ist die Python-Code-Implementierung des Prüfcodes:
# 校验码计算
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 ''

Im obigen Code definieren wir eine Funktion namens check_code, um den Prüfcode der ID-Kartennummer zu berechnen. Der Parameter der Funktion ist die ID-Nummer und der Rückgabewert ist der Bestätigungscode.

Schließlich können wir die extrahierten ID-Nummern in der Schleife überprüfen und nur die ID-Nummern mit korrekten Verifizierungscodes behalten:

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

Im obigen Code definieren wir eine leere Liste mit dem Namen valid_id_list, die zum Speichern der ID-Nummer mit korrekten Codes verwendet wird Bestätigungscode. Verwenden Sie eine Schleife, um alle extrahierten ID-Nummern zu durchlaufen und ihre Prüfcodes zu berechnen. Wenn der Prüfcode mit dem Prüfcode in der extrahierten ID-Nummer übereinstimmt, fügen Sie die ID-Nummer zu valid_id_list hinzu. Schließlich geben wir valid_id_list aus, um eine Liste von ID-Nummern mit korrekten Bestätigungscodes zu erhalten.

Im Allgemeinen können mithilfe des Re-Moduls und regulärer Ausdrücke von Python problemlos ID-Nummern aus Text extrahiert und bestimmte Überprüfungen durchgeführt werden. Dies ist sehr hilfreich bei der Verarbeitung formatierter Informationen wie z. B. ID-Nummern.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie reguläre Python-Ausdrücke zum Extrahieren der ID-Nummer. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn