предложение, когда вы хотите вернуть логическое значение на основе условия, поскольку само условие является логическим.

тим, я ищу слово"or", Я хочу проверить, появляется ли это слово как слово или как подстрока другого слова.

Например.

Вход - "или" Выход - "истина"

Ввод - «для» Ввод - «ложь»

Я полагаю, я мог бы проверить, являются ли символы до и после букв, но есть ли более эффективный / простой способ сделать это? Спасибо

редактировать Кроме того, строка будет частью предложения. Поэтому я хочу, чтобы «Я могу пойти по магазинам или нет», чтобы вернуть значение «истина», но «Я могу пойти по магазинам для обуви», чтобы вернуть значение «false» Поэтому использование == не сработает. Извините, я должен был упомянуть об этом раньше

 Farhan.K11 дек. 2017 г., 19:10
Если это всего лишь одно слово, почему бы вам не использовать==?
 Dan11 дек. 2017 г., 19:14
Потому что это часть предложения, а не одно слово. Например, я хочу, чтобы «Я могу ходить по магазинам или нет» возвращало значение «истина», а «Я могу ходить по магазинам за обувь», чтобы возвращать значение «ложь». Так что использование == не сработает. Извините, я должен был упомянуть об этом в вопросе.

Ответы на вопрос(4)

Решение Вопроса

Используйте регулярное выражение.

>>> import re
>>> re.search(r'\bor\b', 'or')
<_sre.SRE_Match object at 0x7f445333a5e0>
>>> re.search(r'\bor\b', 'for')
>>> 

чтобы разбить предложение на слова, а затем проверить, существует ли какое-либо слово с==.

Установка НЛТК

Загрузка пакета НЛТК

import nltk

def checkword(sentence):
    words = nltk.word_tokenize(sentence)
    return any((True for word in words if word == "or"))

print(checkword("Should be false for."))
print(checkword("Should be true or."))
 Eli Korvigo11 дек. 2017 г., 19:18
Я отредактировал ваш ответ по двум причинам: 1. нет необходимости писатьelse послеif с последующимreturnпотому что вы можете вернуться из функции только один раз; 2. нет необходимости вif/else предложение, когда вы хотите вернуть логическое значение на основе условия, поскольку само условие является логическим.

Вы можете использовать регулярное выражение для этого:

import re

def contains_word(text, word):
    return bool(re.search(r'\b' + re.escape(word) + r'\b', text))

print(contains_word('or', 'or')) # True
print(contains_word('for', 'or')) # False
print(contains_word('to be or not to be', 'or')) # True

если онв линия

def check_word_in_line(word, line):
    return " {} ".format(word) in line

print(check_word_in_line("or", "I can go shopping or not")) //True
print(check_word_in_line("or", "I can go shopping for shoes")) //False

Ваш ответ на вопрос