Найти - Пользователи
Полная версия: Маскирование номера карты
Начало » Python для новичков » Маскирование номера карты
1
matue
Подскажите пожалуйста как замаскировать номер банковской карты (16 знаков)?

На входе лог-txt файл, в котором местами имеются полные номера карт, которые нужно привезти отвида : 1234123412341234 к виду: 1234 **** **** 1234

чтение - запись в файл реализованы.
marvellik
ну я думаю проблемно будет потом определить какая цифра спрятана под * проще зашифровать или буквами или цифрами. да еще не просто тупо сменить допустим 2 на 8 а хитрей допустим первую 2 меняем на 8 или букву а например вторую уже на 4 или букву в и так по всей строке
terabayt
 >>> def f(s):
...     return s[:4] + ' **** **** ' + s[-4:]
... 
>>> f('1234123412341234')
'1234 **** **** 1234'
marvellik
terabayt
ну а когда вы считаете эту строку из файла ‘1234 **** **** 1234’ как восстановить исходные цифры? хотя может это автору не нужно, не уточнил.
ZerG
Скорее всего автор сохраняет в другой файл! ТОгда при востановлении из изначального можно выкусить по поиску фулл номер
matue
не так. Запись в тот же файл.
 import os, re
files = os.listdir(".") # листинг текущей директории
LogFilesNames = filter(lambda x: x.endswith('.log'), files) # отобрать все лог файлы
print'Files:',len(LogFilesNames)
lc=0
for n in LogFilesNames:    # цикл по именам файлов
    f = open(n,'r+').readlines() # читаем строки каждого файла
    print'File: ',n,'\nLines: ',len(f)
    for i in range(len(f)): # цикл по номерам строк
       
тут нужно найти паны и замаскировать их
    with open(n,'w') as F:
        print type(F)
        print type(f)
        F.writelines(f) # применение изменений в файле
        print'Edited lines: ',lc # вывод числа отредактированных строк
        print'Applying in file: ',F.name # вывод имени обработанного файла
ZerG
Вы наверное задачу опишите поточнее
а то какаято магия получается
matue
есть решение!

 import os, re
files = os.listdir(".") # листинг текущей директории
LogFilesNames = filter(lambda x: x.endswith('.log'), files) # отобрать все лог файлы
print'Files:',len(LogFilesNames)
Pattern=r'\D(\d{4})\d{8}(\d{4})\D' #паттерн 
Mask=r' \1 **** **** \2 ' #маска
for n in LogFilesNames:    # цикл по именам файлов
    f = open(n,'r').readlines() # читаем строки файла
    print'File: ',n,'\nLines: ',len(f)
    f_text=''.join(f)  # инициируем переменную f_text и помещаем в нее текстовое содержимое файла
    f_new_text = re.sub(Pattern, Mask, f_text) # в f_new_text пишем обработанный с помощью регулярного выражения текст
    f = open(n, 'w') #открытие файла для записи
    print'Applying in file: ',n # вывод имени обработанного файла
    f.write(f_new_text) #запись в файл преобразованного текста
    f.close() #закрытие файла
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB