如何在特定位置生成字符串的所有可能组合?

2024-06-16 10:59:17 发布

您现在位置:Python中文网/ 问答频道 /正文

如何获取字符串并用一系列字符的所有可能组合替换给定字符的所有匹配项

例如,string=“GPxLEKxLExx”,将x替换为['A'、'B'、'C'、'D'、'e'、'F']

使其返回:

GPALEKALEAA GPBLEKALEAA GPBLEKBLEAA ... GPFLEKALEAA ... gpflekflef

以及这些字符的所有其他组合

根据下面的一个答案,这是对我有用的:

from itertools import product

input_str = 'GPxLEKxLExx'
input_str = input_str.replace('x', '{}')

outputs = []
for comb in product('ABCDEF', repeat=4):
    outputs.append(input_str.format(*comb))

Tags: 字符串答案inputstringproduct字符outputscomb
3条回答
from itertools import combinations_with_replacement

input_str = 'GPxLEKxLExx'
input_str = input_str.replace('x', '{}')

outputs = []
for comb in combinations_with_replacement(['A','B','C','D','E','F'], 4):
    outputs.append(input_str.format(*comb))

Edit:正如@Phossel指出的,正确的函数是itertools.product,而不是combinations_with_replacement。因此,为清晰起见,固定版本为:

from itertools import product

input_str = 'GPxLEKxLExx'
input_str = input_str.replace('x', '{}')

outputs = []
for comb in product(['A','B','C','D','E','F'], repeat=4):
    outputs.append(input_str.format(*comb))

你可以这样做

from itertools import combinations
string = "GP{}LEK{}LE{}{}"
l= ['A','B','C','D','E','F']
l2=list(combinations(l, 4))
for i in l2:
    print(string.format(*i))
myString = "GPxLEKxLExx"
charList = [ 'A', 'B', 'C', 'D', 'E', 'F']
newList = []

for i in charList:
   newList.append(myString.replace("x",i))

新列表中的值是正确答案

相关问题 更多 >