2013-02-18 60 views
0

看到一個奇怪的問題string.findstring.find不能與列表

我有以下列表:

lstofpro = ["Brown, John", "Smith,Jon"] 
keywordstring = "Something: Smith,Jon Account Number: 99999" 

for p in lstofpro: 
    if keywordstring.find(p.strip()) != -1: 
     print ("Found a match for : %s" % p) 

以上,即使在keyworstring存在的價值沒有找到成功的匹配。如果我將p.strip()更改爲「Smith,Jon」的硬編碼值,它會成功找到它。

夥計們有什麼線索可能是錯的?

+4

它在我的機器上工作。你確定你的縮進是正確的嗎? – Achrome 2013-02-18 21:34:09

+0

工作正常與python 2.7.3。請做python -V,並說出你正在使用的python版本。 – Vorsprung 2013-02-18 21:42:08

+1

問題標記爲Python 3.在3.2和3.3中均可正常工作。並且代碼不夠複雜,無法包含任何近期(或最近)版本中已更改的內容。它使用非常基本的功能和Py3-safe語法(打印功能)。 – poke 2013-02-18 21:44:35

回答

1

有沒有理由不能使用「in」運算符?我試過這樣的算法,並得到了預期的結果:

lstofpro = ["Brown, John", "Smith,Jon"] 
keywordstring = "Something: Smith,Jon Account Number: 99999" 

for p in lstofpro: 
    if p in keywordstring: 
     print ("Found a match for : %s" % p) 
+0

這是有效的,它比OP更好 - 但OP的代碼已經可以工作了(如書面),所以它並不能真正解決任何問題。我認爲這會作爲評論更好。 – abarnert 2013-02-18 21:49:51