Lua中的string.gsub函数有什么在Python中的最佳替代函数?

在Python中,Lua中的全局模式替换函数 string.gsub(s, pattern, function) 的最佳替代函数是什么?例如:

> string.gsub("banana", "(a)(n)", function(a,b) return b..a end) -- 反转任何“an”
bnanaa  2

更新:我想在Python中实现类似Lua的string.gsub的复杂功能,可以使用Python的re.subfunctionlambda expr进行实现。

点赞
用户3832970
用户3832970

在Python中,由于string.gsub(s,pattern,replace [,n])返回两个值的一对_修改后的字符串和替换的次数_,因此您需要使用re.subn:

re.subn(pattern, repl, string, count = 0, flags = 0)

执行与sub()相同的操作,但返回一个元组(new_string,number_of_subs_made)。

看看Python演示:

import re
print (re.subn("(a)(n)", r"\2\1", "banana"))
# => ('bnanaa', 2)

您还可以使用匿名方法(或对于简单的情况,使用lambda表达式)作为替换参数:

print (re.subn("(a)(n)", lambda m: "{}{}".format(m.group(2), m.group(1)), "banana"))
# => ('bnanaa', 2)

请参见另一个Python演示

注意:如果您不需要替换的数量,则仅使用re.sub

2017-07-08 10:34:10