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是什么意思呢?
展开
 我来答
sunhk_25
2014-10-14 · TA获得超过1123个赞
知道小有建树答主
回答量:497
采纳率:50%
帮助的人:360万
展开全部

参数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]'
Lovesoo
2014-10-14 · TA获得超过2385个赞
知道小有建树答主
回答量:654
采纳率:66%
帮助的人:410万
展开全部
这里的match应该是一个正则表达式的进行搜索后返回的对象,match.group(1)是返回匹配的对象。
如,
# -*- coding:utf-8 -*-
import re
x=re.search('(abc)','abcd')
print x.group(1)

结果为
abc
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式