Заменить буквы в строке вариативными значениями 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
...
→ Ссылка