我创建了一个允许我创建句子列表(list)的输入和一个包含多个值的字典(dict)的输入。列表和字典的元素根据用户输入的元素而变化
我尝试通过从{}
之间的数据随机选择,让脚本从list中生成句子列表你有一个解决方案使用随机,itertool或re?我完全被封锁了。
我的信息:
List = ["Je {suis|m'appelle} kevin rab et je suis {grand|petit} et {beau|moche}.", "Je {suis|m'appelle} sam slap et je suis {grand|petit} et {beau|moche}.", "Je {suis|m'appelle} bob clob et je suis {grand|petit} et {beau|moche}.", "Je {suis|m'appelle} lydie bal et je suis {grand|petit} et {beau|moche}."]
Dict = {"{suis|m'appelle}": ['suis', 'm%1apo%appelle'], '{grand|petit}': ['grand', 'petit'], '{beau|moche}': ['beau', 'moche']}
我正在搜索这样的结果(随机):
['Je m%1apo%appelle kevin rab et Je suis grand et moche。','Je suis sam slap et Je suis grand et beau '。"我是我的妈妈,我是我的妈妈,我是我的妈妈。"我很高兴,我很高兴,我很高兴,我很高兴。">
您不需要dict
,您可以使用re.sub
与回调函数来查找这些{...}
区域,并将其替换为替代方案之一:
>>> text = "Je {suis|m'appelle} kevin rab et je suis {grand|petit} et {beau|moche}."
>>> re.sub(r"{(.+?)}", lambda m: random.choice(m.group(1).split("|")), text)
'Je suis kevin rab et je suis petit et moche.'
>>> re.sub(r"{(.+?)}", lambda m: random.choice(m.group(1).split("|")), text)
"Je m'appelle kevin rab et je suis petit et beau."
相关文档摘录:
如果
repl
是一个函数,则对pattern
的每次非重叠出现调用该函数。该函数接受一个匹配对象参数,并返回替换字符串。