Как разбить номер карты по 4 знака и выводить первые 6 и последние 4 цифры номера, а вместо остальных звездочки?

Рейтинг: -4Ответов: 2Опубликовано: 07.02.2023

Как разбить номер карты по 4 знака и выводить первые 6 и последние 4 цифры номера, а вместо остальных звездочки? Например: Visa Platinum 7000 79** **** 6361

[{'date': '07.12.2019 06:17:14', 'description': 'Перевод организации', 'from': 'Visa Classic 2842878893689012', 'to': 'Счет 35158586384610753655', 'operationAmount': {'amount': '48150.39', 'currency': {'name': 'USD', 'code': 'USD'}}}, {'date': '19.11.2019 09:22:25', 'description': 'Перевод организации', 'from': 'Maestro 7810846596785568', 'to': 'Счет 43241152692663622869', 'operationAmount': {'amount': '30153.72', 'currency': {'name': 'руб.', 'code': 'RUB'}}}]

номер карты под ключом from

Ответы

▲ 0Принят
card = "Visa Classic 2842878893689012"
card_number = card.split()[-1]

private_number = card_number[:6] + (len(card_number[6:-4]) * '*') + card_number[-4:]

chunks, chunk_size = len(private_number), len(private_number)//4
print(" ".join([ private_number[i:i+chunk_size] for i in range(0, chunks, chunk_size) ]))

Вывод: 2842 87** **** 9012

▲ 0
d={'date': '07.12.2019 06:17:14', 'description': 'Перевод организации', 'from': 'Visa Classic 2842878893689012',
   'to': 'Счет 35158586384610753655', 'operationAmount': {'amount': '48150.39', 'currency': {'name': 'USD', 'code': 'USD'}}}

print(d['from'].split()[2][:6]+'***'+d['from'].split()[2][-4:])

Вывод:

284287***9012