如何在python中检查字符串中的确切单词
基本上,我需要找到一种方法来找到字符串中的确切单词。我在网上读到的所有信息只告诉我如何搜索字符串中的字母 这是正确的 在if语句中仍将返回为true 这就是我目前所拥有的如何在python中检查字符串中的确切单词,python,string,Python,String,基本上,我需要找到一种方法来找到字符串中的确切单词。我在网上读到的所有信息只告诉我如何搜索字符串中的字母 这是正确的 在if语句中仍将返回为true 这就是我目前所拥有的 elif 'This is correct' in text: print("correct") 这将适用于正确的。。。例如,fkrjCorrect、4123Correct和lolcorrect在if语句中都返回为true。当我希望它仅在与“This is correct”(这是正确的)完全匹配时才返回为true
elif 'This is correct' in text:
print("correct")
这将适用于正确的。。。例如,fkrjCorrect、4123Correct和lolcorrect在if语句中都返回为true。当我希望它仅在与“This is correct”(这是正确的)完全匹配时才返回为true时,请使用比较运算符
==
而不是中的,然后:
if text == 'This is correct':
print("Correct")
这将检查整个字符串是否正确。如果不是,则为False
您可以使用正则表达式的单词边界。例如:
import re
s = '98787This is correct'
for words in ['This is correct', 'This', 'is', 'correct']:
if re.search(r'\b' + words + r'\b', s):
print('{0} found'.format(words))
这将产生:
is found
correct found
编辑:要获得精确匹配,请将\b
断言替换为^
和$
,以将匹配限制在行的开头和结尾。您可以进行一些更改
elif 'This is correct' in text[:len('This is correct')]:
或
两者都有效。后者更为灵活 我怀疑您正在查找startswith()
函数。这将检查字符串中的字符是否与另一个字符串的开头匹配
"abcde".startswith("abc") -> true
"abcde".startswith("bcd") -> false
还有一个endswith()
函数,用于在另一端进行检查。实际上,您应该查找由单词边界包围的“This is correct”字符串
所以
应该适合您。使用.split()将字符串拆分为字符串列表,然后使用in运算符
这比使用正则表达式简单得多。下面是一个不使用正则表达式的解决方案。程序在本例中搜索确切的单词“CASINO”,并打印句子
words_list = [ "The Learn Python Challenge Casino.", "They bought a car while at
the casino", "Casinoville" ]
search_string = 'CASINO'
def text_manipulation(words_list, search_string):
search_result = []
for sentence in words_list:
words = sentence.replace('.', '').replace(',', '').split(' ')
[search_result.append(sentence) for w in words if w.upper() ==
search_string]
print(search_result)
text_manipulation(words_list, search_string)
这将打印结果-[“the Learn Python Challenge Casino.”,“他们在赌场买了一辆车”]奇怪的是,你知道在操作符中,而不是=
操作符。在=
中搜索子字符串,同时=
检查是否完全相等。从您的问题标题中,我得到的印象是您确实在搜索子字符串(在这种情况下,
中的是正确的)。但是从你的文章中我得到的印象是你真的想要检查平等吗?(在这种情况下,==
是正确的)我确实想检查子字符串,我只是想确保它之前没有任何内容,你说的“确切的单词”是什么意思?你是说用空格分隔吗?标点符号?你可以使用spaCy短语匹配器。那不正确,因为我需要它来检查句子。。。不伸出一根绳子。。。所以这句话可能是,这是一个伟大的一天,这是正确的@user2750103尝试导入re;如果重新搜索('\b此选项正确\b')不是无:打印('correct')
第二个选项似乎有效,但第一个选项无效。Py3.5第一个片段只是一种愚蠢的书写文本的方式。startswith('This is correct')
。请不要将所有的大写字母用于完整的句子(通常解释为叫喊)。
import re
if re.search(r'\bThis is correct\b', text):
print('correct')
words_list = [ "The Learn Python Challenge Casino.", "They bought a car while at
the casino", "Casinoville" ]
search_string = 'CASINO'
def text_manipulation(words_list, search_string):
search_result = []
for sentence in words_list:
words = sentence.replace('.', '').replace(',', '').split(' ')
[search_result.append(sentence) for w in words if w.upper() ==
search_string]
print(search_result)
text_manipulation(words_list, search_string)