Lua string.gsub 在 Python 中的最佳替代函数是什么?
What's the best alternative function of Lua string.gsub in Python?
Lua的全局模式替换函数string.gsub(s, pattern, function)
在Python[=中最好的替代函数是什么25=]?例如
> 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 or lambda expr.
来实现
如string.gsub(s, pattern, replace [, n])
returns a pair of values, the modified string and the number of substitutions made, in Python, you need to use re.subn
:
re.subn(pattern, repl, string, count=0, flags=0)
Perform the same operation as sub()
, but return a tuple (new_string, number_of_subs_made
).
看到一个Python demo:
import re
print (re.subn("(a)(n)", r"", "banana"))
# => ('bnanaa', 2)
您也可以使用匿名方法(或更简单的情况下的 lambda 表达式)作为替换参数:
print (re.subn("(a)(n)", lambda m: "{}{}".format(m.group(2), m.group(1)), "banana"))
# => ('bnanaa', 2)
注意:如果不需要替换的次数,只需使用 re.sub
.
Lua的全局模式替换函数string.gsub(s, pattern, function)
在Python[=中最好的替代函数是什么25=]?例如
> 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 or lambda expr.
如string.gsub(s, pattern, replace [, n])
returns a pair of values, the modified string and the number of substitutions made, in Python, you need to use re.subn
:
re.subn(pattern, repl, string, count=0, flags=0)
Perform the same operation assub()
, but return a tuple (new_string, number_of_subs_made
).
看到一个Python demo:
import re
print (re.subn("(a)(n)", r"", "banana"))
# => ('bnanaa', 2)
您也可以使用匿名方法(或更简单的情况下的 lambda 表达式)作为替换参数:
print (re.subn("(a)(n)", lambda m: "{}{}".format(m.group(2), m.group(1)), "banana"))
# => ('bnanaa', 2)
注意:如果不需要替换的次数,只需使用 re.sub
.