gpt4 book ai didi

python - 字符串替换组合

转载 作者:太空宇宙 更新时间:2023-11-03 12:21:38 27 4
gpt4 key购买 nike

所以我有一个字符串“1xxx1”,我想用一个字符替换一定数量的 x(也许全部都没有),比方说“5”。我想要字符串的所有可能组合(...可能是排列),其中 x 被替换或保留为 x。我希望将这些结果存储在列表中。

所以想要的结果是

>>> myList = GenerateCombinations('1xxx1', '5')
>>> print myList
['1xxx1','15xx1','155x1','15551','1x5x1','1x551','1xx51']

显然,我希望它能够处理具有任意数量 x 的任意长度的字符串,并且能够替换任意数字。我试过使用循环和递归来解决这个问题,但无济于事。任何帮助将不胜感激。

最佳答案

怎么样:

from itertools import product

def filler(word, from_char, to_char):
options = [(c,) if c != from_char else (from_char, to_char) for c in word]
return (''.join(o) for o in product(*options))

给出

>>> filler("1xxx1", "x", "5")
<generator object <genexpr> at 0x8fa798c>
>>> list(filler("1xxx1", "x", "5"))
['1xxx1', '1xx51', '1x5x1', '1x551', '15xx1', '15x51', '155x1', '15551']

(请注意,您似乎缺少 15x51。)基本上,首先我们为源词中的每个字母列出所有可能的目标:

>>> word = '1xxx1'
>>> from_char = 'x'
>>> to_char = '5'
>>> [(c,) if c != from_char else (from_char, to_char) for c in word]
[('1',), ('x', '5'), ('x', '5'), ('x', '5'), ('1',)]

然后我们使用 itertools.product 获取这些可能性的笛卡尔积并将结果连接在一起。

对于奖励积分,修改以接受替换字典。 :^)

关于python - 字符串替换组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14841652/

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