gpt4 book ai didi

python - 生成所有可能的替换

转载 作者:太空狗 更新时间:2023-10-29 23:59:40 25 4
gpt4 key购买 nike

给定一个替换映射如 {search: replace, search: replace, ...} 和一个字符串,如何生成该字符串所有可能替换的列表(第一个子字符串被替换,第二个子字符串被替换,两者都被替换等)。示例:

map = {
'bee': 'BETA',
'zee': 'ZETA',
'dee': 'DELTA'
}

source_string = 'bee foo zee bar bee'

desired result =
[
'bee foo zee bar bee',
'BETA foo zee bar bee',
'bee foo ZETA bar bee',
'BETA foo ZETA bar bee',
'bee foo zee bar BETA',
'BETA foo zee bar BETA',
'bee foo ZETA bar BETA',
'BETA foo ZETA bar BETA'
]

顺序不重要。

最佳答案

'bee foo zee bar bee' => ['bee', 'foo', 'zee', 'bar', 'bee'] :

from itertools import product

repl = {
'bee': 'BETA',
'zee': 'ZETA',
'dee': 'DELTA'
}
source_string = 'bee foo zee bar bee'
p = product(*((x, repl[x]) if x in repl else (x,) for x in source_string.split()))
for x in p:
print(x)

输出:

('bee', 'foo', 'zee', 'bar', 'bee')
('bee', 'foo', 'zee', 'bar', 'BETA')
('bee', 'foo', 'ZETA', 'bar', 'bee')
('bee', 'foo', 'ZETA', 'bar', 'BETA')
('BETA', 'foo', 'zee', 'bar', 'bee')
('BETA', 'foo', 'zee', 'bar', 'BETA')
('BETA', 'foo', 'ZETA', 'bar', 'bee')
('BETA', 'foo', 'ZETA', 'bar', 'BETA')

关于python - 生成所有可能的替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16463443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com