Я работаю с Python v2, и я пытаюсь выяснить, можете ли вы сказать, есть ли слово в строке.
Я нашел некоторую информацию об идентификации, если слово находится в строке - используя .find, но есть ли способ сделать оператор IF. Я хотел бы иметь что-то вроде следующего:
if string.find(word):
print 'success'
Спасибо за любую помощь.
но имейте в виду, что это соответствует последовательности символов, а не обязательно целому слову - например,
'word' in 'swordsmith'
True. Если вы хотите сопоставлять только целые слова, вам следует использовать регулярные выражения:источник
Если вы хотите узнать, находится ли все слово в списке слов, разделенных пробелами, просто используйте:
Этот элегантный метод также самый быстрый. По сравнению с подходами Хью Ботвелла и ДаСонга:
Редактировать: Небольшой вариант этой идеи для Python 3.6+, такой же быстрый:
источник
contains_word("says", "Simon says: Don't use this answer")
find возвращает целое число, представляющее индекс, где был найден элемент поиска. Если он не найден, он возвращает -1.
источник
Вы можете разбить строку на слова и проверить список результатов.
источник
Эта небольшая функция сравнивает все поисковые слова в данном тексте. Если все искомые слова найдены в тексте, возвращает длину поиска или
False
иным образом.Также поддерживает поиск строки Unicode.
использование:
источник
Если сопоставления последовательности символов недостаточно, и вам нужно сопоставить целые слова, вот простая функция, которая выполняет работу. Он в основном добавляет пробелы, где это необходимо, и ищет его в строке:
Это предполагает, что запятые и другие знаки препинания уже удалены.
источник
Поскольку вы запрашиваете слово, а не строку, я хотел бы представить решение, которое не чувствительно к префиксам / суффиксам и игнорирует регистр:
Если ваши слова могут содержать специальные символы регулярного выражения (например,
+
), то вам нужноre.escape(word)
источник
Расширенный способ проверить точное слово, которое нам нужно найти в длинной строке:
источник
Использование регулярных выражений является решением, но оно слишком сложно для этого случая.
Вы можете просто разбить текст на список слов. Для этого используйте метод split ( separator , num ) . Возвращает список всех слов в строке, используя разделитель в качестве разделителя. Если разделитель не указан, он разделяется на все пустое пространство (по желанию вы можете ограничить количество разделений до num ).
Это не будет работать для строки с запятыми и т. Д. Например:
Если вы также хотите разделить все запятые и т. Д., Используйте аргумент- разделитель, например:
источник
mystring.lower().split()
иword.lower()
я думаю, что это также быстрее, чем пример регулярных выражений.Вы можете просто добавить пробел до и после слова.
Таким образом, он ищет пространство до и после слова.
источник