检查Python字符串中是否包含某个单词
我正在使用Python,想知道怎么判断一个单词是否在一个字符串里。
我找到了一些关于如何检查单词是否在字符串中的信息,比如用 .find
方法,但我想知道有没有办法用 if
语句来实现。我希望能有类似下面这样的代码:
if string.find(word):
print("success")
15 个回答
67
如果你想知道一个完整的单词是否在一个用空格分开的单词列表中,可以直接使用:
def contains_word(s, w):
return (' ' + w + ' ') in (' ' + s + ' ')
contains_word('the quick brown fox', 'brown') # True
contains_word('the quick brown fox', 'row') # False
这个方法既简单又快速。跟Hugh Bothwell和daSong的方法相比:
>python -m timeit -s "def contains_word(s, w): return (' ' + w + ' ') in (' ' + s + ' ')" "contains_word('the quick brown fox', 'brown')"
1000000 loops, best of 3: 0.351 usec per loop
>python -m timeit -s "import re" -s "def contains_word(s, w): return re.compile(r'\b({0})\b'.format(w), flags=re.IGNORECASE).search(s)" "contains_word('the quick brown fox', 'brown')"
100000 loops, best of 3: 2.38 usec per loop
>python -m timeit -s "def contains_word(s, w): return s.startswith(w + ' ') or s.endswith(' ' + w) or s.find(' ' + w + ' ') != -1" "contains_word('the quick brown fox', 'brown')"
1000000 loops, best of 3: 1.13 usec per loop
补充:对于Python 3.6及以上版本,这个想法有一个小变种,同样快速:
def contains_word(s, w):
return f' {w} ' in f' {s} '
214
if 'seek' in 'those who seek shall find':
print('Success!')
但是要记住,这个匹配的是一串字符,而不一定是一个完整的单词——比如说,'word' in 'swordsmith'
这个表达式的结果是 True。如果你只想匹配完整的单词,那你应该使用正则表达式:
import re
def findWholeWord(w):
return re.compile(r'\b({0})\b'.format(w), flags=re.IGNORECASE).search
findWholeWord('seek')('those who seek shall find') # -> <match object>
findWholeWord('word')('swordsmith') # -> None
455
这段代码有什么问题呢:
if word in mystring:
print('success')