2016-08-31 71 views
0

我是一個總noob,第一次編碼,並試圖通過做。 我使用這個:如何在Python中獲得「乾淨」匹配結果

import re 
f = open('aaa.txt', 'r') 
string=f.read() 
c = re.findall(r"Guest last name: (.*)", string) 
print "Dear Mr.", c 

返回

Dear Mr. ['XXXX'] 

我想知道,有沒有什麼辦法讓像

Dear Mr. XXXX 

,而不是結果呢?

在此先感謝。

+0

這是真的,你只有一個名字直到行尾?我會用'\ S +'而不是'。*' - 'r'來賓姓:(\ S +)「'。或'\ S *'如果它可以是空的。無論如何,請在使用前檢查結果。 –

+0

任何時候某個東西都會返回['something'],這意味着它在一個數組中,並且您需要使用[n]訪問它,其中n是數組中元素的位置。 –

+0

幸運的是,我在Python中閱讀的導出文檔每行有1個字符串,所以我用正則表達式很容易。不過,我仍然會盡量使它更準確,無論是爲了實際的代碼還是學習正則表達式。 –

回答

0

你需要採取的第一項列表中的

print "Dear Mr.", c[0] 
0

是使用re.search如果你只希望一場比賽:

re.search(r"Guest last name: (.*)", string).group(1)` 

的findall是,如果你希望多個匹配。您可能還希望爲您的正則表達式添加?以獲得非貪婪捕獲,但是您也可能希望更具體一些,並捕獲您想要的名稱/短語後面的下一個可能字符。

+0

謝謝,我會研究更復雜的正則表達式,因爲現在我只是構建骨架!我嘗試使用re.search,但它返回「<_sre.SRE_Match對象在0x000000000361DBE8>」。我猜這意味着它找到了一場比賽,並且在比賽的地方,但我需要在我的輸出中的實際匹配:) –

相關問題