蟒蛇字符串替换,产生所有可能的组合
问题描述:
我处理字符串,每个在括号中的可选变量的动态量:蟒蛇字符串替换,产生所有可能的组合
(?please) tell me something (?please)
现在我想用一个空字符串替换变量,并取回所有可能的变化:
tell me something (?please)
(?please) tell me something
tell me something
想要的函数应该处理多个,不同的和无穷无尽的变量。
任何帮助高度赞赏。
答
在String Replacement Combinations上使用该解决方案的问题是,解决方案会迭代原始字符串中的每个字符,而您想检查原始字符串的子字符串。因此,您应该使用字符串split()
并遍历该列表。另外,当您最后加入列表时,请将空格放回单词之间。例如,
def filler(word, from_char, to_char):
options = [(c,) if c != from_char else (from_char, to_char) for c in word.split(" ")]
return (' '.join(o) for o in product(*options))
list(filler('(?please) tell me something (?please)', '(?please)', ''))
这将返回
['(?please) tell me something (?please)', '(?please) tell me something ', ' tell me something (?please)', ' tell me something ']
如果你想忽略不包含清除(行'(?please) tell me something (?please)'
)行,哈克简单的办法就是去掉结果的第一个元素,因为product
的工作方式可以保证第一个结果会选取每个选项的第一个元素,这对应于没有删除字符串的行。
我已经尝试了DSM http://*.com/questions/14841652/string-replacement-combinations的代码,但它不适用于完整的句子,不知道为什么。 – HSRF