我是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 。 哪里出错了?先谢谢
答案 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