簡體   English   中英

在python字符串中找到完整的單詞

[英]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")

worksun不應該匹配, 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM