Как замаскировать конкретные значения в определенном столбце в Python? - PullRequest
0 голосов
/ 12 июля 2019

У меня есть файл .csv с 5 столбцами и около 5000 строк.В определенном столбце под названием «резюме» в файле .csv есть номера кредитных карт и текст.Похоже, это

эй, эту работу нужно сделать как можно скорее и оплатить картой # visa 5611000043310001

Я хочу прочитать эту колонку, убрать номер (возможно,используя регулярное выражение), а затем замаскируйте последние 4 цифры и запишите всю строку, как она есть, с замаскированным числом, как это в CSV-файле.

эй, эту работу нужно сделать как можно скорее и оплатить картой # visa 561100004331 ****

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 12 июля 2019

С помощью регулярного выражения вы можете сделать:

import re

>> s = "hey this job needs to be done asap and pay with card# visa 5611000043310001"
>> re.sub(r"(\d{12})\d{4}",r"\1****",s)

'hey this job needs to be done asap and pay with card# visa 561100004331****'

Таким образом, в принципе, (\d{12}) соответствует первым 12 цифрам (круглые скобки не заменяют эти первые 12).А потом 4 цифры, которые мы заменяем на звезды.\1 - это заполнитель для первой группы, которая не указана при замене, поэтому здесь она относится к первым 12 цифрам.

0 голосов
/ 12 июля 2019

Функция замены с регулярным выражением ниже ищет номера ровно 16 цифр и маскирует последние 4 цифры.

Итак, этот код:

eg_summaries = [
    'blah blah card# visa 5611000043310001',
    'blah blah card# visa 5611000043310001 with text after',
    '5611000043310001',
    'visa: 5611000043310001 and random number > 16 digits: 0011237324763246723487243',
               ]
df = pd.DataFrame({'summary': eg_summaries })
df['summary'].replace(r'\b(\d{12})\d{4}\b', r'\1****', inplace=True, regex=True)
print (df.summary)

должен распечатать это: 0 blah blah card# visa 561100004331**** 1 blah blah card# visa 561100004331**** with text after 2 561100004331**** 3 visa: 561100004331**** and random number > 16 digits: 0011237324763246723487243

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...