在python字符串中找到完整的单词

时间:2018-01-22 07:25:04

标签: python

基本上,这一切都归结为只找到全字,而不是匹配其子字符串。

我的短语如下:

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))

虽然确实找到了我的话,但它也发现了#34;我不想要的东西(一个单词的子串):

我知道在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解释器,它将匹配第二行。

1 个答案:

答案 0 :(得分:0)

我不明白为什么split()不起作用。问题是def read_csv(file_name): with open(file_name) as f: return list(csv.reader(f)) (我认为没有必要)。它创建一个单独的字符串,在其中搜索关键字 - 然后它也会找到子字符串。

以下内容对我有用:

.__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