仅在Python中为某些单词生成基于替换字典的变体字符串

时间:2017-07-09 15:18:06

标签: python string dictionary

给定一个字符串和一个单词替换字典,我试图让python返回所有变体字符串。例如。对于字符串"一个去了市场"和更换字典{'一个':['一个','两个'&# 39;三'],'市场':[' town',' bed']}我想回归:['一个人去了小镇'两个去了小镇'三个去了小镇'一个去了床,'两个去了床',& #39;三人上床睡觉了。目前,只有当有两个替换选项时,我才能使用它。

我的部分工作方法使用字典中生成的单词列表,例如在上面的例子中,我有['一,二,三''去','到',' town,bed'] 。这个:

def perm(wordlist):
    a=[[]]
    for i in wordlist:
        if ',' in i:
            wds=i.split(',')
            for alis in a:
                alis.append(wds[0])
            for j in wds[1:]:
                b=[x[:-1] for x in a]
                for alis in b:
                    alis.append(j)
                    a=a+b
        else:
            for alis in a:
                alis.append(i)
    return a

for [' One,Two',' go',' to',#39; town,bed']我得到了所需的结果,但任何时候有两个以上的选择,它就是乱七八糟的。

1 个答案:

答案 0 :(得分:0)

据说你有这些:

string = "One went to market"
dict_repl = {'One':['One','Two','Three'],'market':['town','bed']}

您可以使用string comprehensionstr.replace使用此一个班轮获得预期结果:

result = [string.replace('market',v).replace('One',i) for v in dict_repl['market'] for i in dict_repl['One']]

输出:

['One went to town', 'Two went to town', 'Three went to town', 'One went to bed', 'Two went to bed', 'Three went to bed']

我相信这就是你要求的。