проведя некоторое исследование, я приду к этому уродливому решению:
Сначала вы создадите список со всеми символами ascii:
value = '1230LE'
t = list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')
Затем удалите из этой длинной строки символ значения присутствует в вашем строковом значении (используя t.index
, чтобы найти индекс символа):
for c in value:
del t[t.index(c)]
# Output (without '1', '2', '3', '0', 'L', 'E')
# ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','F','G','H','I','J','K','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','4','5','6','7','8','9']
Тогда вам нужно только сделать генератор basi c на основе вашей новой строки:
from random import choice
n = len(value)
str_characters = ''.join(t) # 'abcdefghijklmnopqrstuvwxyzABCDFGHIJKMNOPQRSTUVWXYZ456789'
generated_value = [choice(str_characters) for i in range(n)] # ['7', 'l', 'N', 'j', 'c', 'i']
''.join(generated_value) #'7lNjci'
Вот вам, это сложное решение, но оно работает.
Если вы хотите сделать это только для чисел c, вы можете использовать это значение для t
:
t = list('0123456789')
Полный код:
value = '1230LE'
t = list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')
for c in value:
del t[t.index(c)]
from random import choice
n = len(value)
str_characters = ''.join(t) # 'abcdefghijklmnopqrstuvwxyzABCDFGHIJKMNOPQRSTUVWXYZ456789'
generated_value = [choice(str_characters) for i in range(n)] # ['7', 'l', 'N', 'j', 'c', 'i']
''.join(generated_value) #'7lNjci'
Надеюсь, это поможет, весело проведите время!