gpt4 book ai didi

python - 根据函数输出替换字符串

转载 作者:太空狗 更新时间:2023-10-29 20:47:24 25 4
gpt4 key购买 nike

因此,对于输入:

accessibility,random good bye

我想要输出:

a11y,r4m g2d bye

所以,基本上,我必须按照以下格式缩写所有长度大于或等于 4 的单词:first_letter + length_of_all_letters_in_between + last_letter

我尝试这样做:

re.sub(r"([A-Za-z])([A-Za-z]{2,})([A-Za-z])", r"\1" + str(len(r"\2")) + r"\3", s)

但它不起作用。在 JS 中,我很容易做到:

str.replace(/([A-Za-z])([A-Za-z]{2,})([A-Za-z])/g, function(m, $1, $2, $3){
return $1 + $2.length + $3;
});

如何在 Python 中执行相同的操作?

编辑:我不能丢失原始字符串中的任何标点符号。

最佳答案

您在 JavaScript 中所做的肯定是正确的,您正在传递一个匿名函数。你在 Python 中所做的是传递一个常量表达式(“\12\3”,因为 len(r"\2") 在函数调用之前计算),它不是一个可以对每场比赛进行评估!

虽然 Python 中的匿名函数不如它们在 JS 中那么有用,但它们在这里完成了工作:

>>> import re
>>> re.sub(r"([A-Za-z])([A-Za-z]{2,})([A-Za-z])", lambda m: "{}{}{}".format(m.group(1), len(m.group(2)), m.group(3)), "accessability, random good bye")
'a11y, r4m g2d bye'

这里发生的是为每个替换调用 lambda,获取一个匹配对象。然后我检索所需的信息并从中构建一个替换字符串。

关于python - 根据函数输出替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30544912/

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