在我的问题中,how to escape the whole string in python? Martijn Pieters给了我一个很好的方法来解决它,但我不知道复杂的lambda表达式,
的含义是什么?
lambda m: m.group().encode('string_escape')
如何解释
re.sub(r'[\x00-\x1f\x7f-\xff]', lambda m: '\\{:o}'.format(ord(m.group())), filename)
答案 0 :(得分:2)
python中的lambda表达式是一种匿名函数。
func = lambda m: m.group().encode('string_escape')
与以下内容相同:
def func(m):
return m.group().encode('string_escape')
所以基本上,第一个lambda意味着:
调用传递的参数的
group
方法,并在其上运行encode('string_escape')
。
让我们来看看re.sub
电话。正则表达式捕获代码在Ox00
(十进制0)和Ox1f
(31)之间或0x7f
(127)和0xff
(255)之间的所有字符。这匹配所有可打印的“标准”ASCII字符。
所以对于每一个,我们应用传递给调用的lambda(匹配的字符串将作为m
传递):
lambda m: '\\{:o}'.format(ord(m.group()))
这是一个python字符串format
调用,返回反斜杠\\
,后跟传递给{:o}
的第一个参数的八进制表示format
。此参数是匹配字符(ord
)
m.group()
)