2014-12-03 217 views
0

我是一名Python初學者,正在努力尋找簡單的代碼。 我有一個字符串,如:在Python中re.search的打印結果

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" 

在執行此,我得到的結果是,在0x0000000001EB8D98

< _sre.SRE_Match對象>

但我需要的結果作爲SESSION_ID = 2a50250f-4a2e-4bf9-b1a7-7a8030333de2。 我要去的地方錯了預先感謝

回答

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 
+0

我使用上述但不幸的是它的工作不適合我。我正在使用Python 2.7和我得到 「會話ID未找到」 – 2014-12-03 08:54:53

+0

我只是在2.7測試0.7。並似乎工作。你有和你的問題一樣的線嗎?也許它不適用於其他線路? – Marcin 2014-12-03 10:17:33

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'