gpt4 book ai didi

python - 如何映射两个字符串之间的差异?

转载 作者:太空狗 更新时间:2023-10-30 00:53:01 25 4
gpt4 key购买 nike

我遇到了以下问题,想知道解决它的优雅方法是什么。假设我们有两个字符串:

string1 = "I love to eat $(fruit)"
string2 = "I love to eat apples"

这些字符串之间的唯一区别是 $(fruit)apples。所以,我可以找到水果是苹果,并且可以返回一个 dict{fruit:apples}

另一个例子是:

string1 = "I have $(food1), $(food2), $(food3) for lunch"
string2 = "I have rice, soup, vegetables for lunch"

我想要一个 dict{food1:rice, food2:soup, food3:vegetables} 作为结果。

有人知道如何实现它吗?

编辑:

我想我需要功能更强大。

ex.
string1 = "I want to go to $(place)"
string2 = "I want to go to North America"

result: {place : North America}

ex.
string1 = "I won $(index)place in the competition"
string2 = "I won firstplace in the competition"

result: {index : first}

规则是:映射字符串的不同部分并使它们成为字典

所以我想所有使用 str.split() 或尝试拆分字符串的答案都不会起作用。没有规则说明哪些字符将用作字符串中的分隔符。

最佳答案

我认为这可以通过基于正则表达式的拆分来干净地完成。这还应该处理标点符号和其他特殊字符(空间分割不够)。

import re

p = re.compile(r'[^\w$()]+')
mapping = {
x[2:-1]: y for x, y in zip(p.split(string1), p.split(string2)) if x != y}

对于您的示例,这将返回

{'fruit': 'apple'}

{'food1': 'rice', 'food2': 'soup', 'food3': 'vegetable'}

关于python - 如何映射两个字符串之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52545751/

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