Как найти слово в строке python
Перейти к содержимому

Как найти слово в строке python

  • автор:

Поиск слова в строке Python

Как написать условие которое будет искать слово в строке? Пользователь вводит какую-то строку, например:

меня звать Олег, мне 35 лет

Тогда Python проверяет, если в вводимой строке есть слово «звать» — тогда вывести print(«Привет») . Я делаю так, но не работает так как нужно:

if mess == u'звать': print("Привет") 

Если я введу «меня звать. » то ничего не произойдет Если введу просто слово «звать» — то напишет «Привет»

Отслеживать
13.8k 12 12 золотых знаков 44 44 серебряных знака 77 77 бронзовых знаков
задан 17 янв 2017 в 9:33
171 1 1 золотой знак 2 2 серебряных знака 12 12 бронзовых знаков
Про оператор in пишут в любом учебнике по Python
17 янв 2017 в 9:40

@andreymal: in не различает слово от подстроки: «призвать духа» содержит «звать» подстроку, но не содержит слова «звать». in сам по себе не найдёт «звать» в «Звать меня . » (регистр). Не говоря о «зовут меня . » (форма слов)

17 янв 2017 в 9:54

@jfs это всё должен был написать автор в вопросе в виде «попробовал так-то, не получается». К тому же ни про регистр, ни про форму слов в вопросе не спрашивается

17 янв 2017 в 11:06
А ещё in различает слова вместо подстрок в сочетании с spilt 🙂
17 янв 2017 в 11:07

@andreymal: согласен, что вопрос следует дополнить. Двумя руками за был бы, если бы ваш первый комментарий попросил бы автора уточнить: нужна подстрока или отдельное слово? важен ли регистр букв (большие маленькие)? итд

17 янв 2017 в 11:10

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

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

import re; if re.search(r'\bзвать\b', 'меня звать Олег, мне 35 лет'): print("Привет") 

Отслеживать
ответ дан 17 янв 2017 в 10:24
1,495 12 12 серебряных знаков 16 16 бронзовых знаков
А если входная строка «Олегом меня звать, мне 35 лет»?
14 мар 2019 в 11:50
@МихаилМуругов и для этой строки тоже отлично работает
15 мар 2019 в 23:54
@andreymal Вы правы. Мои знания по регуляркам немного отстали.
16 мар 2019 в 16:49

Он сравнивает целую строку с условием «звать» соответственно «звать» <> «меня звать» Я не чего не смыслю в питоне, я больше по sql. Но немного загуглив нашел, у вас должно быть так. find метод поиска в строке ,возвращает индекс первого вхождения подстроки в строку, в случае отсутствия подстроки ,возвращает -1. Имеет вид str1.find(str2,[start],[end])

if mess.find('звать') != -1 : print("Привет") 

В sql server бы это выглядело так:

declare @a varchar(100) = 'меня звать' if @a like '%звать%' print ("Привет") 

Что такое функция find в Python?

Метод find() используется для поиска в строке. В качестве обязательного аргумента принимает строку, которую нужно найти. Метод возвращает индекс символа, с которого начинается искомая строка. Если строка не найдена, метод вернет -1 .

txt = 'Hello, welcome to my world.' x = txt.find('welcome') print(x) # => 7 

В качестве необязательных аргументов метод также принимает начало (с какого индекса начать поиск, по умолчанию это 0 — начало строки), а также конец (на каком индексе закончить поиск строки, по умолчанию поиск проводится по всей строке).

Методы поиска подстроки в строке в Python

Баннер Баннер

Очень часто при работе со строками в Python возникает необходимость проверить, содержит ли данная строка определенную подстроку. Например, есть некоторый текст, и необходимо узнать, встречается ли в нем слово «привет».

text = "Привет, мир! Это моя первая программа на Python."

Изначально может показаться, что для этого в Python должны быть методы типа string.contains или string.indexof , как в некоторых других языках программирования. Однако, в Python поиск подстроки в строке реализуется несколько иначе.

Оператор in

Самый простой и удобный способ проверить, содержит ли строка определенную подстроку, — использовать оператор in .

if "привет" in text: print("Слово 'привет' найдено в тексте")

Если подстрока присутствует в строке, выражение вернет True , иначе False .

Метод find

Если же необходимо узнать не только факт наличия подстроки, но и ее позицию в строке, можно воспользоваться методом find .

position = text.find("привет") if position != -1: print(f"Слово 'привет' найдено в тексте на позиции ")

Метод find возвращает индекс первого вхождения подстроки в строку. Если подстрока не найдена, метод возвращает -1 .

Метод index

Метод index работает похожим образом, что и find , но с одним отличием: если подстрока не найдена, index выбрасывает исключение ValueError .

try: position = text.index("привет") print(f"Слово 'привет' найдено в тексте на позиции ") except ValueError: print("Слово 'привет' не найдено в тексте")

Таким образом, в Python действительно есть возможность проверить наличие подстроки в строке, а также узнать ее позицию. Для этого используются оператор in и методы find и index .

Строки. Функции и методы строк

Python 3 логотип

Итак, о работе со строками мы немного поговорили, теперь поговорим о функциях и методах строк.

Я постарался собрать здесь все строковые методы и функции, но если я что-то забыл — поправляйте.

Базовые операции

  • Конкатенация (сложение)

При вызове методов необходимо помнить, что строки в Python относятся к категории неизменяемых последовательностей, то есть все функции и методы могут лишь создавать новую строку.

  :  Поэтому все строковые методы возвращают новую строку, которую потом следует присвоить переменной.

Таблица «Функции и методы строк»

Функция или метод Назначение
S = ‘str’; S = «str»; S = »’str»’; S = «»»str»»» Литералы строк
S = «s\np\ta\nbbb» Экранированные последовательности
S = r»C:\temp\new» Неформатированные строки (подавляют экранирование)
S = b»byte» Строка байтов
S1 + S2 Конкатенация (сложение строк)
S1 * 3 Повторение строки
S[i] Обращение по индексу
S[i:j:step] Извлечение среза
len(S) Длина строки
S.find(str, [start],[end]) Поиск подстроки в строке. Возвращает номер первого вхождения или -1
S.rfind(str, [start],[end]) Поиск подстроки в строке. Возвращает номер последнего вхождения или -1
S.index(str, [start],[end]) Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError
S.rindex(str, [start],[end]) Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError
S.replace(шаблон, замена[, maxcount]) Замена шаблона на замену. maxcount ограничивает количество замен
S.split(символ) Разбиение строки по разделителю
S.isdigit() Состоит ли строка из цифр
S.isalpha() Состоит ли строка из букв
S.isalnum() Состоит ли строка из цифр или букв
S.islower() Состоит ли строка из символов в нижнем регистре
S.isupper() Состоит ли строка из символов в верхнем регистре
S.isspace() Состоит ли строка из неотображаемых символов (пробел, символ перевода страницы (‘\f’), «новая строка» (‘\n’), «перевод каретки» (‘\r’), «горизонтальная табуляция» (‘\t’) и «вертикальная табуляция» (‘\v’))
S.istitle() Начинаются ли слова в строке с заглавной буквы
S.upper() Преобразование строки к верхнему регистру
S.lower() Преобразование строки к нижнему регистру
S.startswith(str) Начинается ли строка S с шаблона str
S.endswith(str) Заканчивается ли строка S шаблоном str
S.join(список) Сборка строки из списка с разделителем S
ord(символ) Символ в его код ASCII
chr(число) Код ASCII в символ
S.capitalize() Переводит первый символ строки в верхний регистр, а все остальные в нижний
S.center(width, [fill]) Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию)
S.count(str, [start],[end]) Возвращает количество непересекающихся вхождений подстроки в диапазоне [начало, конец] (0 и длина строки по умолчанию)
S.expandtabs([tabsize]) Возвращает копию строки, в которой все символы табуляции заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается равным 8 пробелам
S.lstrip([chars]) Удаление пробельных символов в начале строки
S.rstrip([chars]) Удаление пробельных символов в конце строки
S.strip([chars]) Удаление пробельных символов в начале и в конце строки
S.partition(шаблон) Возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки
S.rpartition(sep) Возвращает кортеж, содержащий часть перед последним шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий две пустых строки, а затем саму строку
S.swapcase() Переводит символы нижнего регистра в верхний, а верхнего – в нижний
S.title() Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний
S.zfill(width) Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями
S.ljust(width, fillchar=» «) Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar
S.rjust(width, fillchar=» «) Делает длину строки не меньшей width, по необходимости заполняя первые символы символом fillchar
S.format(*args, **kwargs) Форматирование строки

Для вставки кода на Python в комментарий заключайте его в теги

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *