В Python я пытаюсь анонимизировать или замаскировать n символов (из последних). Это работает для совпадения, но я также хочу игнорировать слова, содержащие цифры.
* 1003 например *
string = 'SomeText +12 555 660 000 f00b4r abc123'
digits = 5
repl_char = 'X'
regex = '[0-9\s\+]+'
for match in re.finditer(regex, string):
phone_no = match.group()
new_ph_no = ''
i = 0
if phone_no in ['', ' ']:
pass
else:
for phone_digit in phone_no[::-1]:
if phone_digit == ' ' or i >= digits:
new_ph_no += phone_digit
else:
new_ph_no += repl_char
i += 1
string = string.replace(phone_no, new_ph_no[::-1])
print(string)
Текущий выходной сигнал: 'SomeText +x2 555 6xx xxx fxxbxr abcxxx'
Желаемый выход: 'SomeText +12 555 6XX XXX f00b4r abc123'
Я попытался добавить '[^?!a-zA-Z(0-9).*$]'
к регулярному выражению, которое дало желаемый результат, но не удалось, когда я передаю строку как 'SomeText +12 555 660 000'
Мое намерение состоит в том, чтобы напечатать номер телефона из любого типа строки и заменить n цифр на 'x' (или любой символ)
Как распечатать нужный вывод?