Найти символы в строке Python
Для поиска символов в начале строки применяется метод startswith , который возвращает булевые значения True или False . В первом параметре метода задаем нужный нам символ, во втором и третьем необязательных параметрах — индекс начала и конца поиска соответственно. Смотрите пример:
txt = ‘abсadea’ res = txt.startswith(‘a’, 3, 6) print(res)
Результат выполнения кода:
С помощью метода endswith
Чтобы найти вхождение символа в конце строки используют метод endswith , который возвращает булевые значения True или False . В первом параметре метода задаем символ, во втором и третьем необязательных параметрах — индекс начала и конца поиска соответственно. Смотрите пример:
txt = ‘abсadea’ res = txt.endswith(‘a’, 0, 4) print(res)
Результат выполнения кода:
Смотрите также
- метод startswith ,
который проверяет подстроку с начала строки - метод endswith ,
который проверяет вхождение подстроки с конца строки
Как найти если символ в строке python
У меня есть переменная «buy» в которую пользователь вписывает цифру или символ и программа проверяет есть ли этот символ в строке «weap» как такое можно провернуть как можно легче ? Я уже делал такую программу но код был слишком большим .
Отслеживать
задан 29 июн 2022 в 15:33
Panos Negra Panos Negra
3 2 2 бронзовых знака
if symbol in string: , ну то есть в вашем случае if buy in weap:
29 июн 2022 в 15:41
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
if buy in weap: # код
weap.find(buy) # возвращает номер символа в строке или если его нет, то -1
Отслеживать
ответ дан 29 июн 2022 в 20:37
467 3 3 серебряных знака 15 15 бронзовых знаков
Это, скорее, комментарий по практике сайта.
30 июн 2022 в 5:26
Python string method find() determines if string str occurs in string, or in a substring of string if starting index beg and ending index end are given.
Отслеживать
ответ дан 29 июн 2022 в 16:14
Igor Kudryashov Igor Kudryashov
1,756 10 10 серебряных знаков 13 13 бронзовых знаков
find избыточен, если конкретная позиция не нужна, для проверки факта наличия достаточно in
30 июн 2022 в 7:45
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как найти букву в строке
Рассмотрим основные методы строк, которые мы можем применить в приложениях:
- isalpha() : возвращает True, если строка состоит только из алфавитных символов
- islower() : возвращает True, если строка состоит только из символов в нижнем регистре
- isupper() : возвращает True, если все символы строки в верхнем регистре
- isdigit() : возвращает True, если все символы строки — цифры
- isnumeric() : возвращает True, если строка представляет собой число
- startswith(str) : возвращает True, если строка начинается с подстроки str
- endswith(str) : возвращает True, если строка заканчивается на подстроку str
- lower() : переводит строку в нижний регистр
- upper() : переводит строку в вехний регистр
- title() : начальные символы всех слов в строке переводятся в верхний регистр
- capitalize() : переводит в верхний регистр первую букву только самого первого слова строки
- lstrip() : удаляет начальные пробелы из строки
- rstrip() : удаляет конечные пробелы из строки
- strip() : удаляет начальные и конечные пробелы из строки
- ljust(width) : если длина строки меньше параметра width, то справа от строки добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по левому краю
- rjust(width) : если длина строки меньше параметра width, то слева от строки добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по правому краю
- center(width) : если длина строки меньше параметра width, то слева и справа от строки равномерно добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по центру
- find(str[, start [, end]) : возвращает индекс подстроки в строке. Если подстрока не найдена, возвращается число -1
- replace(old, new[, num]) : заменяет в строке одну подстроку на другую
- split([delimeter[, num]]) : разбивает строку на подстроки в зависимости от разделителя
- partition(delimeter) : разбивает строку по разделителю на три подстроки и возвращает кортеж из трех элементов — подстрока до разделителя, разделитель и подстрока после разделителя
- join(strs) : объединяет строки в одну строку, вставляя между ними определенный разделитель
Например, если мы ожидаем ввод с клавиатуры числа, то перед преобразованием введенной строки в число можно проверить, с помощью метода isnumeric() введено ли в действительности число, и если так, то выполнить операцию преобразования:
string = input("Введите число: ") if string.isnumeric(): number = int(string) print(number)
Проверка, начинается или оканчивается строка на определенную подстроку:
file_name = "hello.py" starts_with_hello = file_name.startswith("hello") # True ends_with_exe = file_name.endswith("exe") # False
Удаление пробелов в начале и в конце строки:
string = " hello world! " string = string.strip() print(string) # hello world!
Дополнение строки пробелами и выравнивание:
print("iPhone 7:", "52000".rjust(10)) print("Huawei P10:", "36000".rjust(10))
iPhone 7: 52000 Huawei P10: 36000
Поиск в строке
Для поиска подстроки в строке в Python применяется метод find() , который возвращает индекс первого вхождения подстроки в строку и имеет три формы:
- find(str) : поиск подстроки str ведется с начала строки до ее конца
- find(str, start) : параметр start задает начальный индекс, с которого будет производиться поиск
- find(str, start, end) : параметр end задает конечный индекс, до которого будет идти поиск
Если подстрока не найдена, метод возвращает -1:
welcome = "Hello world! Goodbye world!" index = welcome.find("wor") print(index) # 6 # поиск с 10-го индекса index = welcome.find("wor",10) print(index) # 21 # поиск с 10 по 15 индекс index = welcome.find("wor",10,15) print(index) # -1
Замена в строке
Для замены в строке одной подстроки на другую применяется метод replace() :
- replace(old, new) : заменяет подстроку old на new
- replace(old, new, num) : параметр num указывает, сколько вхождений подстроки old надо заменить на new. По умолчанию num равно -1, что соответствует первой версии метода и приводит к замене всех вхождений.
phone = "+1-234-567-89-10" # замена дефисов на пробел edited_phone = phone.replace("-", " ") print(edited_phone) # +1 234 567 89 10 # удаление дефисов edited_phone = phone.replace("-", "") print(edited_phone) # +12345678910 # замена только первого дефиса edited_phone = phone.replace("-", "", 1) print(edited_phone) # +1234-567-89-10
Разделение на подстроки
Метод split() разбивает строку на список подстрок в зависимости от разделителя. В качестве разделителя может выступать любой символ или последовательность символов. Данный метод имеет следующие формы:
- split() : в качестве разделителя используется пробел
- split(delimeter) : в качестве разделителя используется delimeter
- split(delimeter, num) : параметр num указывает, сколько вхождений delimeter используется для разделения. Оставшаяся часть строки добавляется в список без разделения на подстроки
text = "Это был огромный, в два обхвата дуб, с обломанными ветвями и с обломанной корой" # разделение по пробелам splitted_text = text.split() print(splitted_text) print(splitted_text[6]) # дуб, # разбиение по запятым splitted_text = text.split(",") print(splitted_text) print(splitted_text[1]) # в два обхвата дуб # разбиение по первым пяти пробелам splitted_text = text.split(" ", 5) print(splitted_text) print(splitted_text[5]) # обхвата дуб, с обломанными ветвями и с обломанной корой
Еще один метод — partition() разбивает строку по разделителю на три подстроки и возвращает кортеж из трех элементов — подстрока до разделителя, разделитель и подстрока после разделителя:
text = "Это был огромный, в два обхвата дуб, с обломанными ветвями и с обломанной корой" text_parts = text.partition("дуб") print(text_parts) # ('Это был огромный, в два обхвата ', 'дуб', ', с обломанными ветвями и с обломанной корой')
Если разделитель с строке не найден, то возвращается кортеж с одной строкой.
Соединение строк
При рассмотрении простейших операций со строками было показано, как объединять строки с помощью операции сложения. Другую возможность для соединения строк представляет метод join() : он объединяет список строк. Причем текущая строка, у которой вызывается данный метод, используется в качестве разделителя:
words = ["Let", "me", "speak", "from", "my", "heart", "in", "English"] # разделитель - пробел sentence = " ".join(words) print(sentence) # Let me speak from my heart in English # разделитель - вертикальная черта sentence = " | ".join(words) print(sentence) # Let | me | speak | from | my | heart | in | English
Вместо списка в метод join можно передать простую строку, тогда разделитель будет вставляться между символами этой строки:
word = "hello" joined_word = "|".join(word) print(joined_word) # h|e|l|l|o
Python: Извлечение символов из строки
Иногда нужно получить один символ из строки. Например, если сайт знает имя и фамилию пользователя, и в какой-то момент требуется вывести эту информацию в формате A. Ivanov. Для этого компьютеру потребуется взять первый символ из имени. В Python есть подходящая операция, которую мы изучим сегодня.
Представим, что из имени Alexander нужно вывести на экран только первую букву. Это выглядит так:
first_name = 'Alexander' print(first_name[0]) # => A
Операция с квадратными скобками с цифрой извлекает элемент по индексу — позицией символа внутри строки. Индексы начинаются с 0 почти во всех языках программирования. Поэтому, чтобы получить первый символ, нужно указать индекс 0 . Индекс последнего элемента равен длине строки минус единица. Обращение к индексу за пределами строки приведет к ошибке:
# Длина строки 9, поэтому последний индекс — это 8 first_name = 'Alexander' print(first_name[8]) # => r print(first_name[9]) IndexError: string index out of range
Чтобы лучше закрепить новые знания, посмотрите на код ниже и подумайте, что он выдаст:
magic = '\nyou' print(magic[1]) # => ?
Бывают и нестандартные ситуации. Например, нужно вывести элемент из конца, причем из выражения с большим количеством символов. В этом случае можно воспользоваться отрицательным индексом, который облегчит работу программиста.
Допустимо использовать отрицательные индексы. В этом случае идет обращение к символам, начиная с конца строки. -1 — индекс последнего символа, -2 — предпоследнего и так далее. В отличие от прямой индексации, обратный отсчет идет от -1 :
first_name = 'Alexander' print(first_name[-1]) # => r
Индексом может быть не только конкретное число, но и значение переменной. Посмотрите на пример ниже. Здесь мы записали индекс внутри квадратных скобок не числом, а переменной. Такой код приведет к тому же результату — выводу на экран символа A:
first_name = 'Alexander' index = 0 print(first_name[index]) # => A
Чтобы выводить из выражения лишь некоторые символы, не нужно писать большое количество строк кода — достаточно извлечь элемент с помощью индекса. Также можно пользоваться отрицательным индексом, чтобы легче выводить символы с конца выражения. Далее разберемся, как с помощью этих знаний можно извлекать подстроки из строки.
Задание
Выведите на экран последний символ строки, находящейся в переменной name
Упражнение не проходит проверку — что делать?
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя
Это нормально , в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Определения
- Индекс — позиция символа внутри строки.