在Python中,Lua string.gsub的最佳替代功能是什么?

时间:2017-07-08 09:00:20

标签: python lua gsub

Python Lua 的全局模式替换函数string.gsub(s, pattern, function)的最佳替代函数是什么? e.g。

> string.gsub("banana", "(a)(n)", function(a,b) return b..a end) -- reverse any "an"s
bnanaa  2

UPDATE :我想在Python中进行模式替换时实现一个复杂的函数,比如Lua的string.gsub,这可以由Python的re.sub function实现。 }或lambda expr

1 个答案:

答案 0 :(得分:2)

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

  

<强> re.subn(pattern, repl, string, count=0, flags=0)
  执行与sub()相同的操作,但返回元组(new_string, number_of_subs_made)。

查看Python demo

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)

请参阅another Python demo

注意:如果您不需要替换次数,请仅使用re.sub