Python正则表达式组()追加'无'

时间:2011-11-23 09:25:43

标签: python regex

我有简单的正则表达式来解析这个字符串:

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 个答案:

答案 0 :(得分:1)

你有两张照片。第一个打印搜索结果,第二个打印返回值pars_respNone,因为您没有返回任何内容。

将其更改为

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 :(得分:1)

没有错。好吧,除了

print pars_resp(rawresp0)

函数pars_resp返回None。删除该print语句,使最后一行为:

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)

这通常更有用,因为您现在可以使用提取的字符串执行其他操作而不是打印它。