[英]finding just full words in a python string
基本上,這全都歸結為僅找到全字,而不是也匹配其子串。
我有這樣的短語:
texto =“您好,今天是工作周的第一天”,我想做的就是將該短語拆分為單詞,以查看是否有從SQL查詢中獲取的匹配的全單詞,如下所示:
sql = "select keyword from keywords"
try:
cursor.execute(sql)
# Fetch all the rows in a list of lists.
results = cursor.fetchall()
for result in results:
keywords.append(result)
所以這里有一個關鍵字元組。
所以,是的,當然,您可以像這樣拆分短語:
for word in texto.split():
if word in keywords.__str__():
print ("keyword %s detected in texto" % (word))
但是,盡管確實找到了我的單詞,但它也“發現”了一些我不希望或期望得到的東西(一個單詞的子字符串):
我知道在PHP中您將執行以下操作:
if (preg_match("/\b$search\b/", texto)):
{print "word found"}
我在SO上已經閱讀了很多關於此的討論。 有人說您只是拆分,(但這就是我所做的),其他人則說使用此方法:
這不是怎么做的。
>>> re.search(r'\babc\b', 'abc123')
>>> re.search(r'\babc\b', 'abc 123')
<_sre.SRE_Match object at 0x1146780>
這是最新的示例嗎? 根據shell解釋器,它將與第二行匹配。
我不明白為什么split()不起作用。 問題是.__str__()
(我認為沒有必要)。 它會創建一個字符串,在其中搜索關鍵字-然后它將找到子字符串。
以下為我工作:
texto = "hello today is the first day of working week"
keywords = ["is", "day", "week", "work", "sun"]
for keyword in keywords:
print("keyword", keyword, end=" ")
if keyword in texto.split():
print("found.")
else:
print("not found")
work
和sun
不應該匹配, work
是文本中的子字符串, sun
不是文本中的子字符串。
輸出是
keyword is found.
keyword day found.
keyword week found.
keyword work not found
keyword sun not found
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.