在python中打印re.search的结果

时间:2014-12-03 07:21:39

标签: python

我是Python的初学者,正在努力寻找一个简单的代码。 我有一个字符串:

ERROR_CODE=0,ERROR_MSG=null,SESSION_ID=2a50250f-4a2e-4bf9-b1a7-7a8030333de2|||33a3b23d-2143

我想使用re.search()从字符串中获取SESSION_ID=2a50250f-4a2e-4bf9-b1a7-7a8030333de2

我的代码:

line=ERROR_CODE=0,ERROR_MSG=null,SESSION_ID=2a50250f-4a2e-4bf9-b1a7-7a8030333de2|||33a3b23d-2143
sessionId=re.search(r'SESSION_ID=*|',line)
            if sessionId:
                print sessionId     
            else:
                print "Session id not found"

执行此操作时,我得到的结果是,

< _sre.SRE_Match对象位于0x0000000001EB8D98>

但我需要结果为 SESSION_ID = 2a50250f-4a2e-4bf9-b1a7-7a8030333de2 。 哪里出错了?先谢谢

2 个答案:

答案 0 :(得分:0)

search在群组中捕获:
替换:

print sessionId 

为:

print sessionId.group()     

演示:

>>> a = "hello how are you"
>>> k= re.search('[a-z]+',a)
>>> k
<_sre.SRE_Match object at 0x7f9c456fe030>
>>> k.group()
'hello'

答案 1 :(得分:0)

您的问题是'SESSION_ID = |'。字符'|'应该转义,而不是*应该是'。'。

sessionId=re.search(r'SESSION_ID=.*\|',line)

if sessionId:
    print(sessionId.group())     
else:
    print("Session id not found")

结果是:

SESSION_ID=2a50250f-4a2e-4bf9-b1a7-7a8030333de2|||

可能有更好的方法来搜索这个,但我只是对你的正则表达式进行了最简单的修改。

更好的方法就是例如。

sessionId=re.search(r'(SESSION_ID=[\w-]+)\|',line)

if sessionId:
    print(sessionId.group(1))     
else:
    print("Session id not found")

这给出了:

SESSION_ID=2a50250f-4a2e-4bf9-b1a7-7a8030333de2