データ処理のプロセスでは、多くの場合、テキストから特定の形式で情報を抽出する必要があります。 ID番号は比較的一般的な個人情報として、データ処理によく使用されます。 Python 正規表現を使用すると、ID 番号を簡単に抽出し、それに対して特定の検証を実行できます。
ID番号は、ID番号に地域、生年月日、認証コードを含む18桁の数字で構成されています。 Python では、re モジュールの正規表現関数を使用して ID 番号を抽出できます。
まず、ID 番号を含むテキスト ファイルを準備する必要があります。ファイルの名前が id_list.txt で、各行に ID 番号が含まれているとします。
次に、次のコードを使用してファイルを読み取り、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)
上記のコードでは、正規表現 r'd{ 18} を使用しました。 |(d{17}(d|X|x))'
は ID 番号と一致します。この正規表現には、d{18}
と d{17}(d|X|x)
という 2 つの部分があります。このうち、d{18}
は 18 桁、つまり完全な ID 番号と一致することを意味し、d{17}(d|X|x)
は 17 桁と最後の数字が一致することを意味します。数字 ID 番号は数字または文字 X/x です。 |
記号を使用して 2 つの部分を接続すると、完全な ID 番号と ID 番号と検証コードの両方を同時に照合できます。
re.findall
関数を使用して、テキスト内の正規表現に一致するすべての文字列と一致し、一致した結果のリストを返します。ここでは、抽出した ID 番号リストを id_list
変数に保存します。
次に、抽出した ID 番号を確認します。 ID カード番号の検証ルールは、ここで簡単に紹介する関連規格を参照できます。
チェック コードは、ID 番号の最後の数字または文字 X/x であり、最初の 17 桁から特定のアルゴリズムによって導出されます。チェックコードの計算方法は次のとおりです:
以下はチェック コードの Python コード実装です:
# 校验码计算 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 ''
上記のコードでは、ID カード番号のチェック コードを計算するために check_code という名前の関数を定義します。関数のパラメータはID番号、戻り値は検証コードです。
最後に、ループ内で抽出された ID 番号を検証し、正しい検証コードを持つ ID 番号のみを保持できます。
# 进行校验,并输出结果 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)
上記のコードでは、 valid_id_list という名前の空のリストを定義します。 ID 番号を正しい検証コードとともに保存するために使用されます。抽出した ID 番号をすべてループしてチェック コードを計算し、抽出した ID 番号のチェック コードと同じ場合は、その ID 番号を valid_id_list に追加します。最後に、valid_id_list を出力して、正しい検証コードを持つ ID 番号のリストを取得します。
一般にPythonのreモジュールと正規表現を使えばテキストからID番号を簡単に抽出でき、ある程度の検証も可能です。これは、ID 番号などのフォーマットされた情報を処理する場合に非常に役立ちます。
以上がPython 正規表現を使用して ID 番号を抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。