我一直在寻找有一段时间了这一点,但使用“在”全字仍然没有找到答案,也许它有一些事情用正则表达式,但我认为应该有一个简单的答案,我在这里失踪。这似乎很琐碎,我......这里有云:匹配在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