如何在Python中使用字典值替换正则表达式,其中键是来自同一字符串的另一个匹配对象

如何在Python中使用字典值替换正则表达式,其中键是来自同一字符串的另一个匹配对象,python,regex,search,dictionary,replace,Python,Regex,Search,Dictionary,Replace,我的正则表达式需要匹配一个句子中的两个单词,但只需要替换第二个单词。第一个单词实际上是字典的一个键,在字典中取第二个单词的替代词。在PERL中,它看起来像: $sentence = "Tom's boat is blue"; my %mydict = {}; # some key-pair values for name => color $sentence =~ s/(\S+)'s boat is (\w+)/$1's boat is actually $mydict{$1}/; pri

我的正则表达式需要匹配一个句子中的两个单词,但只需要替换第二个单词。第一个单词实际上是字典的一个键,在字典中取第二个单词的替代词。在PERL中,它看起来像:

$sentence = "Tom's boat is blue";
my %mydict = {}; # some key-pair values for name => color
$sentence =~ s/(\S+)'s boat is (\w+)/$1's boat is actually $mydict{$1}/;
print $sentence;
如何在python中实现这一点?

类似这样的内容:

>>> sentence = "Tom's boat is blue"
>>> mydict = { 'Tom': 'green' }
>>> import re
>>> re.sub("(\S+)'s boat is (\w+)", lambda m: "{}'s boat is actually {}".format(m.group(1), mydict[m.group(1)]), sentence)
"Tom's boat is actually green"
>>> 

虽然将lambda提取到一个命名函数会更好。

它工作得很好,但我想知道为什么它没有Perl那么直观,这与我目前使用Python的经验完全相反。