[英]What's the best alternative function of Lua string.gsub in Python?
What's the best alternative function of Lua 's global pattern substitution function string.gsub(s, pattern, function)
in Python ? 在Python中Lua的全局模式替换函数
string.gsub(s, pattern, function)
的最佳替代函数是什么? eg 例如
> string.gsub("banana", "(a)(n)", function(a,b) return b..a end) -- reverse any "an"s
bnanaa 2
UPDATE : I'd like to implement a complex function during pattern substitution in Python like Lua's string.gsub
, which can be implemented by Python's re.sub
with function or lambda expr . 更新 :我想在Python模式替换期间实现一个复杂的功能,例如Lua的
string.gsub
,可以由Python的re.sub
使用function或lambda expr来实现 。
As 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
: 由于
string.gsub(s, pattern, replace [, n])
返回一对值, 修改后的字符串和进行的替换数目 ,在Python中,您需要使用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
).执行与
sub()
相同的操作,但返回一个元组(new_string, number_of_subs_made
)。
See a Python demo : 参见Python演示 :
import re
print (re.subn("(a)(n)", r"\2\1", "banana"))
# => ('bnanaa', 2)
And you also may use an anonymous method (or a lambda expression for simpler scenarios) as a replacement argument: 而且,您还可以使用匿名方法(对于更简单的方案,可以使用lambda表达式)作为替换参数:
print (re.subn("(a)(n)", lambda m: "{}{}".format(m.group(2), m.group(1)), "banana"))
# => ('bnanaa', 2)
See another Python demo . 参见另一个Python演示 。
NOTE : If you need no number of replacements made, use a mere re.sub
. 注意 :如果不需要进行大量更换,请仅使用
re.sub
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.