python函数
defreplacement(match):code=match.group(1)try:returnstr(eval(code,scope))exceptSyntaxE...
def replacement(match):
code=match.group(1)
try:
return str(eval(code,scope))
except SyntaxError:
exec code in scope
return ''
初学者求解释下这个函数,尤其是这个match是什么意思呢? 展开
code=match.group(1)
try:
return str(eval(code,scope))
except SyntaxError:
exec code in scope
return ''
初学者求解释下这个函数,尤其是这个match是什么意思呢? 展开
2个回答
展开全部
参数match是正则表达式匹配后的结果,match.group(1)就是返回结果1。
import re
m = re.search('(^.+?)\n(.+?$)', 'print "111"\nprint "222"')
print m.group(1)#print "111"
eval()一般是用来执行字符串代码,也就是命令注入。
其中的参数code:就是要执行的代码,比如print "111"
其中的参数scope:是code执行范围的字典.
由于匹配的字符串代码经常有格式对齐等问题,所以加一个try except来捕捉。
exec跟eval类似,可以执行代码,但是只是一个语法,没有返回值。
exec code in scope就是执行code作用范围为scope字典
追问
回复晚了。。。
field_pat=re.compile(r'\[(.+?)\]')
主要这个不太懂,这个print field_pat.sub(replacement,'[x=2][y=2]The sum of [x] and [y] is [x+y]'),这里面replacement是怎么调用的呢?
追答
#你这里的replacement指的就是你要替换成什么。
#下面的例子是把数字替换成replacement(这里是D)
import re
field_pat=re.compile("[\d]")
replacement = "D"
print field_pat.sub(replacement,'[x=2][y=2]The sum of [x] and [y] is [x+y]')
#输出'[x=D][y=D]The sum of [x] and [y] is [x+y]'
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询