Заменить буквы в строке вариативными значениями python
Есть строка из 4 букв ABCX
Необходимо создать массив в котором будут строки, в которых X заменен сначала на A, потом B, C и D
Пробовал через replace, но он требует строку для замены
print([i for i in st i.replace("X","ABCD")])
Ввод: ABCX
Вывод: ABCA, ABCB, ABCC, ABCD
Ответы (3 шт):
Автор решения: Zhihar
→ Ссылка
не понял - вам вот это нужно?
text = "TEST XXX BEST"
res = [text.replace("X", letter) for letter in "ABCD"]
print(res)
Автор решения: Михаил Муругов
→ Ссылка
from itertools import product
text = 'TEST XXX BEST' # Входные данные
placeholder = 'X' # Что будем заменять
alph = 'ABC' # алфавит букв, которыми будем заменять
template_str = text.replace(placeholder , '{}') # Меняем места для замены на {}, чтобы затем к этой строке можно было применить format
result = [
template_str.format(*seq) # Подставляем комбинацию в строку
for seq in product(alph, repeat=template_str.count('{}')) # Для всех возможных комбинаций
]
В результате будет
['TEST AAA BEST',
'TEST AAB BEST',
'TEST AAC BEST',
'TEST ABA BEST',
'TEST ABB BEST',
'TEST ABC BEST',
'TEST ACA BEST',
'TEST ACB BEST',
'TEST ACC BEST',
'TEST BAA BEST',
'TEST BAB BEST',
'TEST BAC BEST',
'TEST BBA BEST',
'TEST BBB BEST',
'TEST BBC BEST',
'TEST BCA BEST',
'TEST BCB BEST',
'TEST BCC BEST',
'TEST CAA BEST',
'TEST CAB BEST',
'TEST CAC BEST',
'TEST CBA BEST',
'TEST CBB BEST',
'TEST CBC BEST',
'TEST CCA BEST',
'TEST CCB BEST',
'TEST CCC BEST']
Автор решения: extrn
→ Ссылка
import itertools
def solve(text, char='X', replace='ABCD'):
return map(''.join, itertools.product(*(x if x != char else replace for x in text)))
for line in solve('TEST XXX BEST'):
print(line)
TEST AAA BEST
TEST AAB BEST
TEST AAC BEST
...