ホームページ > バックエンド開発 > Python チュートリアル > Python 正規表現を使用して ID 番号を抽出する方法

Python 正規表現を使用して ID 番号を抽出する方法

WBOY
リリース: 2023-06-22 10:35:26
オリジナル
4247 人が閲覧しました

データ処理のプロセスでは、多くの場合、テキストから特定の形式で情報を抽出する必要があります。 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 桁から特定のアルゴリズムによって導出されます。チェックコードの計算方法は次のとおりです:

  1. 最初の 17 桁に対応する重み係数を乗算して 17 個の積を取得し、
  2. 17 個の積を加算して合計を取得します。
  3. 合計を11で割って余りを求めます;
  4. 余りからチェックコードを求めます 具体的な対応関係は以下の通りです: 余りが0の場合チェックコードは1、余りが0の場合チェックコードは1です。余りが 1 の場合、チェック コードは 0、
    余りが 2 の場合、チェック コードは X/x、余りが 3 ~ 10 の場合、チェック コードは 11 から余りを引いたものです。

以下はチェック コードの 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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート