import re
cnic_data = { }
cnic_number_pattern = r'\b (\d {5}-\d {7}-\d )\b '
name_pattern = r'\b Name\s +(\S (?:.*?\S )?)\s {2,}(?=Father\b )'
father_name_pattern = r'\b Father\s *Name[:\- \s ]*(\S (?:.*?\S \s +))(?=Gender\b )'
country_of_stay_pattern = r'\b Country\s *of\s *Stay\s +(?:[A-Z]+)?[:\- \s ]*([A-Z][A-Za-z\s ]*)(?=\s +Identity\b )'
gender_pattern = r'\b Gender\s *[:\- \s a-zA-Z]*\s +(M|F|Male|Female)\b '
dob_pattern = r'\b Date\s *of\s *Birth\s +[:\- \s 0-9]*\s (\d {2}[.-]\d {2}[.-]\d {4})\b '
etext = "PAKISTAN National Identity Card ISLAMIC REPUBLIC OF PAKISTAN Name Muhammad Talha Bin Maghfoor Father Name Maghfoor Ahmed Gender Country of Stay M Pakistan Identity Number Date of Birth 37403-9637109-9 11.01.1999 Date of Issue Date of Expiry 03.02.2024 03.02.2034"
cnic_data[ 'CNIC Number' ] = re .search ( cnic_number_pattern, etext)
cnic_data[ 'Name' ] = re .search ( name_pattern, etext)
cnic_data[ 'Father Name' ] = re .search ( father_name_pattern, etext)
cnic_data[ 'Gender' ] = re .search ( gender_pattern, etext)
cnic_data[ 'Date of Birth' ] = re .search ( dob_pattern, etext)
cnic_data[ 'Country of Stay' ] = re .search ( country_of_stay_pattern, etext)
cnic_data = { key: ( match.group ( 1 ) if match else "Not Found" ) for key, match in cnic_data.items ( ) }
for key, value in cnic_data.items ( ) :
print ( f"{key}: {value}" )
aW1wb3J0IHJlCgpjbmljX2RhdGEgPSB7fQoKCmNuaWNfbnVtYmVyX3BhdHRlcm4gPSByJ1xiKFxkezV9LVxkezd9LVxkKVxiJwpuYW1lX3BhdHRlcm4gPSByJ1xiTmFtZVxzKyhcUyg/Oi4qP1xTKT8pXHN7Mix9KD89RmF0aGVyXGIpJwpmYXRoZXJfbmFtZV9wYXR0ZXJuID0gcidcYkZhdGhlclxzKk5hbWVbOlwtXHNdKihcUyg/Oi4qP1xTXHMrKSkoPz1HZW5kZXJcYiknCmNvdW50cnlfb2Zfc3RheV9wYXR0ZXJuID0gcidcYkNvdW50cnlccypvZlxzKlN0YXlccysoPzpbQS1aXSspP1s6XC1cc10qKFtBLVpdW0EtWmEtelxzXSopKD89XHMrSWRlbnRpdHlcYiknCmdlbmRlcl9wYXR0ZXJuID0gcidcYkdlbmRlclxzKls6XC1cc2EtekEtWl0qXHMrKE18RnxNYWxlfEZlbWFsZSlcYicKZG9iX3BhdHRlcm4gPSByJ1xiRGF0ZVxzKm9mXHMqQmlydGhccytbOlwtXHMwLTldKlxzKFxkezJ9Wy4tXVxkezJ9Wy4tXVxkezR9KVxiJwoKZXRleHQgPSAiUEFLSVNUQU4gTmF0aW9uYWwgSWRlbnRpdHkgQ2FyZCAgSVNMQU1JQyBSRVBVQkxJQyBPRiBQQUtJU1RBTiBOYW1lIE11aGFtbWFkIFRhbGhhIEJpbiBNYWdoZm9vciAgRmF0aGVyIE5hbWUgTWFnaGZvb3IgQWhtZWQgR2VuZGVyIENvdW50cnkgb2YgU3RheSBNIFBha2lzdGFuIElkZW50aXR5IE51bWJlciBEYXRlIG9mIEJpcnRoIDM3NDAzLTk2MzcxMDktOSAxMS4wMS4xOTk5ICBEYXRlIG9mIElzc3VlIERhdGUgb2YgRXhwaXJ5IDAzLjAyLjIwMjQgMDMuMDIuMjAzNCIKCmNuaWNfZGF0YVsnQ05JQyBOdW1iZXInXSA9IHJlLnNlYXJjaChjbmljX251bWJlcl9wYXR0ZXJuLCBldGV4dCkKY25pY19kYXRhWydOYW1lJ10gPSByZS5zZWFyY2gobmFtZV9wYXR0ZXJuLCBldGV4dCkKY25pY19kYXRhWydGYXRoZXIgTmFtZSddID0gcmUuc2VhcmNoKGZhdGhlcl9uYW1lX3BhdHRlcm4sIGV0ZXh0KQpjbmljX2RhdGFbJ0dlbmRlciddID0gcmUuc2VhcmNoKGdlbmRlcl9wYXR0ZXJuLCBldGV4dCkKY25pY19kYXRhWydEYXRlIG9mIEJpcnRoJ10gPSByZS5zZWFyY2goZG9iX3BhdHRlcm4sIGV0ZXh0KQpjbmljX2RhdGFbJ0NvdW50cnkgb2YgU3RheSddID0gcmUuc2VhcmNoKGNvdW50cnlfb2Zfc3RheV9wYXR0ZXJuLCBldGV4dCkKCmNuaWNfZGF0YSA9IHtrZXk6IChtYXRjaC5ncm91cCgxKSBpZiBtYXRjaCBlbHNlICJOb3QgRm91bmQiKSBmb3Iga2V5LCBtYXRjaCBpbiBjbmljX2RhdGEuaXRlbXMoKX0KCgpmb3Iga2V5LCB2YWx1ZSBpbiBjbmljX2RhdGEuaXRlbXMoKToKICAgIHByaW50KGYie2tleX06IHt2YWx1ZX0iKQ==