我一直在尋找有一段時間了這一點,但使用「在」全字仍然沒有找到答案,也許它有一些事情用正則表達式,但我認爲應該有一個簡單的答案,我在這裏失蹤。這似乎很瑣碎,我......這裏有雲:匹配在python
在Python解釋器,我得到:
"abc" in "abc123"
爲真。
我希望它返回一個假的命令。我希望整個單詞能夠匹配。
謝謝!
我一直在尋找有一段時間了這一點,但使用「在」全字仍然沒有找到答案,也許它有一些事情用正則表達式,但我認爲應該有一個簡單的答案,我在這裏失蹤。這似乎很瑣碎,我......這裏有雲:匹配在python
在Python解釋器,我得到:
"abc" in "abc123"
爲真。
我希望它返回一個假的命令。我希望整個單詞能夠匹配。
謝謝!
如果你想要做的只是一個字的簡單的匹配,使用==:
'abc' == 'abc123' # false
如果你正在做'abc' in ['cde','fdabc','abc123']
,即返回False反正:
'abc' in ['cde','fdabc','abc123'] # False
'abc' in 'abc123'
返回true究其原因,從docs:
對於Unicode和字符串類型,
x in y
爲真,當且僅當x
是 子的y
。等效測試是y.find(x) != -1
。
所以針對一個字符串,使用「==」比較,如果字符串的集合中的比較,可以用來in
(你也可以做'abc' in ['abc123']
- 因爲in
作品的行爲,你的直覺想象當y
是列表或收集各種各樣的
順便說一句,你如何查找python文檔'in'?!使用Google搜索「python」「in」並不是那麼有用......(我很好奇爲什麼'abc123'中的'abc'返回true)。 – 2012-02-28 06:04:54
你可以在你的解釋器中做「幫助」(「in」)。 – RanRag 2012-02-28 06:06:05
in
是不是它是如何做。
>>> re.search(r'\babc\b', 'abc123')
>>> re.search(r'\babc\b', 'abc 123')
<_sre.SRE_Match object at 0x1146780>
我認爲這一定是最好的 – jimwan 2013-06-14 15:12:20
你可以嘗試使用找到方法和結果爲-1比較:
>>> a = "abc123"
>>> a.find("abc")
0
>>> a.find("bcd")
-1
我可能不明白你的問題,但似乎你想要的是"abc123" == "abc"
。這返回False
,而"abc123" == "abc123"
返回True
。
也許你正在尋找的全字,但在空白分裂匹配?也就是說,不符"abc123"
,但它確實匹配"abc def"
?如果是這樣的話,你想是這樣的:
def word_in (word, phrase):
return word in phrase.split()
word_in("abc", "abc123") # False
word_in("abc", "abc def") # True
for循環是多餘的,您可以在phrase.split()中使用'if w',甚至可以簡單地'在phrase.split()中使用'return w' – 2012-02-28 07:01:40
感謝編輯。 – 2012-02-28 07:16:20
也許是錯誤的鏡頭,但它可以在一個更簡單的方式來完成。
def word_in(needle,haystack,case_sensitive=True):
if needle + ' ' in haystack or ' ' + needle + ' ' in haystack or needle + ' ' in haystack:
return True
return False
print word_in('abc','abc123')
print word_in('abc','abc 123')
第一個例子產生假,其他的真
在我的情況,我用一個小把戲。整個單詞應該用空格包圍。所以,如果我想找到像「Kill」這樣的詞,我會搜索「Kill」。在這種情況下,它不會包含「技能」字匹配
' kill ' in myString
你想「ABC 123」來匹配呢? – DSM 2012-02-28 06:01:55
包括你需要的一些案例。你的問題對我來說有點不清楚。 – RanRag 2012-02-28 06:04:52
是的..得到了我的答案...謝謝 – Rahul 2012-02-28 06:22:40