基本上我需要找到一种方法来找出在字符串中找到精确单词的方法。我在网上阅读的所有信息只给了我如何搜索字符串中的字母
98787这是正确的
在if语句中仍然会返回true。
这是我到目前为止所做的。
elif 'This is correct' in text:
print("correct")
这将适用于正确之前的任何字母组合...例如fkrjCorrect,4123Correct和lolcorrect将在if语句中返回true。当我希望它回归真实时,如果它完全匹配“这是正确的”
答案 0 :(得分:11)
使用比较运算符==
代替in
,然后:
if text == 'This is correct':
print("Correct")
这将检查整个字符串是否只是'This is correct'
。如果不是,则为False
答案 1 :(得分:10)
您可以使用正则表达式的单词边界。例如:
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
断言替换为^
和$
,以将匹配限制为行的开头和结尾。
答案 2 :(得分:2)
您可以进行一些更改。
elif 'This is correct' in text[:len('This is correct')]:
或
elif ' This is correct ' in ' '+text+' ':
两者都有效。后者更灵活。
答案 3 :(得分:2)
我怀疑您正在寻找startswith()
功能。这将检查字符串中的字符是否与另一个字符串的开头匹配
"abcde".startswith("abc") -> true
"abcde".startswith("bcd") -> false
还有endswith()
函数,用于在另一端进行检查。
答案 4 :(得分:1)
实际上,您应该查找由字边界包围的“这是正确的”字符串。
所以
import re
if re.search(r'\bThis is correct\b', text):
print('correct')
应该适合你。
答案 5 :(得分:0)
以下是不使用正则表达式的解决方案。该程序在这种情况下搜索“ 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)
这将打印结果-['学习Python挑战赌场。','他们在赌场购买了汽车']
答案 6 :(得分:-3)
使用.split()将字符串拆分为字符串列表,然后使用in运算符。
这比使用正则表达式简单得多。