У меня есть список ниже с шаблонами регулярных выражений и другими значениями в списке, а также другая информация, связанная с шаблоном.
Regexes = ['.*PERSONAL[\W]*ACC(((OU)?N)?T|N(UM|BR|O(?![A-Z]))).*', 'ACC INFO', 'IDENTIFICATION INFO', '.*(ADDRESS|(|\b)ADDR)([\W]*LINE|LN)?[\W]\d', 'ADDRESS', 'ADDRESS INFO', '.(_|\b)(GE?NDE?R|SEX|MALE|FEMALE)(_|\b).', 'GENDER INFO', 'BIOGRAPHIC INFO', '(CHE(CK|QUE)|.*CHE(CK|QUE)[_\W]N(UM|BR|O(?![A-Z])).)','INSTRUMENT_NUMBER', 'FINANCIAL INFO']
В приведенном выше списке есть значения для шаблона регулярных выражений, чувствительного типа и чувствительной категории , Приведенный выше список является лишь примером, у меня есть что-то вроде более 400 шаблонов регулярных выражений.
Первый элемент - это шаблон регулярного выражения, а второй - senstive_type, а третий элемент - senstive_category.
У меня есть данные кадр, как показано ниже
INPUT:
+-----------------------------------+---------------------+-------------------+
| NAME |SENSITIVE_TYPE | SENSTIVE_CATEGORY |
+-----------------------------------+---------------------+-------------------+
| PERSONAL_NUMBER | | |
| GENDER FLAG | | |
| SEX_FLAG | | |
| CHECK_NUMBER | | |
| CHECK_NO | | |
| ADDRESS_1 | | |
| ADDRESS_2 | | |
+-----------------------------------+---------------------+-------------------+
Таким образом, код должен проходить через столбец N oop через NAME в кадре данных, и если столбец NAME совпадает с шаблоном регулярных выражений из первого элемента в затем укажите код, который должен обновить столбцы Sensible_type и Sensual_category во фрейме данных из соответствующих значений в списке.
ВЫХОД:
+-----------------------------------+---------------------+--------------------+
| NAME |SENSITIVE_TYPE | SENSTIVE_CATEGORY |
+-----------------------------------+---------------------+--------------------+
| PERSONAL_NUMBER | ACC INFO | IDENTIFICATION INFO|
| GENDER FLAG | GENDER INFO | BIOGRAPHIC INFO |
| SEX_FLAG | GENDER INFO | BIOGRAPHIC INFO |
| CHECK_NUMBER | INSTRUMENT NUMBER | FINANCIAL INFO |
| CHECK_NO | INSTRUMENT NUMBER | FINANCIAL INFO |
| ADDRESS_1 | ADDRESS | ADDRESS INFO |
| ADDRESS_2 | ADDRESS | ADDRESS INFO |
+-----------------------------------+---------------------+--------------------+
Код:
import sys
import csv
import re
import pandas as pd
df = pd.read_csv('c:\samples\data.csv')
Regexes = ['.*PERSONAL[_\\W]*ACC(((OU)?N)?T|N(UM|BR|O(?![A-Z]))).*', 'ACC INFO', 'IDENTIFICATION INFO',
'.*(ADDRESS|(_|\\b)ADDR)([_\\W]*LINE|LN)?[_\\W]*\\d*', 'ADDRESS', 'ADDRESS INFO',
'.*(_|\\b)(GE?NDE?R|SEX|MALE|FEMALE)(_|\\b).*', 'GENDER INFO', 'BIOGRAPHIC INFO',
'(CHE(CK|QUE)|.*CHE(CK|QUE)[_\\W]*N(UM|BR|O(?![A-Z])).*)','INSTRUMENT NUMBER', 'FINANCIAL INFO']
regex_pattern= Regexes[0::3]
senstive_category=Regexes[1::3]
senstive_type=Regexes[2::3]
for result in df.NAME:
if re.search(regex_pattern, result):
df.assign(SENSITIVE_CATEGORY=[Regex_cat])
df.assign(SENSITIVE_TYPE=Regex_type)
print(df)
else:
pass
Я не уверен, как достичь вышеизложенного? Любое предложение по решению было бы замечательно.
Примечание: Также весь список регулярных выражений также может быть создан как фрейм данных, но я даже не знаю, как кодировать с двумя фреймами данных и получить желаемый результат.
Спасибо