Python regex group() 追加 'None
我有一个简单的正则表达式,用来解析这个字符串:
rawresp0 = """<response>
<comment>Привет.</comment>
</response>"""
我想得到:
Привет.
但是下面的代码却出乎意料地返回了:
Привет.
None
哪里出错了呢
def pars_resp(text):
reg = re.compile(ur'(?<=<comment>).+(?=</comment>)', re.U)
print reg.search(unicode(text, "UTF-8")).group(0)
print pars_resp(rawresp0)
2 个回答
1
你有两个打印输出。第一个打印的是你搜索的结果,第二个打印的是pars_resp
的返回值,因为你没有返回任何东西,所以它的值是None
。
你可以把它改成下面的任意一种:
def pars_resp(text):
reg = re.compile(ur'(?<=<comment>).+(?=</comment>)', re.U)
print reg.search(unicode(text, "UTF-8")).group(0)
pars_resp(rawresp0)
或者:
def pars_resp(text):
reg = re.compile(ur'(?<=<comment>).+(?=</comment>)', re.U)
return reg.search(unicode(text, "UTF-8")).group(0)
print pars_resp(rawresp0)
这样就能打印出你想要的内容了。
1
没什么问题。嗯,除了这个
print pars_resp(rawresp0)
这个函数 pars_resp
返回的是 None
。把那个打印语句去掉,最后一行应该是:
pars_resp(rawresp0)
这样就可以正常工作了。
补充说明:
另外,你也可以让这个函数返回你想打印的字符串:
def pars_resp(text):
reg = re.compile(ur'(?<=<comment>).+(?=</comment>)', re.U)
return reg.search(unicode(text, "UTF-8")).group(0)
print pars_resp(rawresp0)
这样做通常更有用,因为你可以对提取出来的字符串做其他事情,而不仅仅是打印它。