Python: поиск подстроки, операции со строками. Как выполнять поиск в строке Python?
В этой статье поговорим про строки в Python, особенности поиска, а также о том, как искать подстроку или символ в строке.
Но сначала давайте вспомним основные методы для обработки строк в Python: • isalpha(str) : если строка в Python включает в себя лишь алфавитные символы, возвращается True; • islower(str) : True возвращается, если строка включает лишь символы в нижнем регистре; • isupper(str) : True, если символы строки в Python находятся в верхнем регистре; • startswith(str) : True, когда строка начинается с подстроки str; • isdigit(str) : True, когда каждый символ строки — цифра; • endswith(str) : True, когда строка в Python заканчивается на подстроку str; • upper() : строка переводится в верхний регистр; • lower() : строка переводится в нижний регистр; • title() : для перевода начальных символов всех слов в строке в верхний регистр; • capitalize() : для перевода первой буквы самого первого слова строки в верхний регистр; • lstrip() : из строки в Python удаляются начальные пробелы; • rstrip() : из строки в Python удаляются конечные пробелы; • strip() : из строки в Python удаляются и начальные, и конечные пробелы; • rjust(width) : когда длина строки меньше, чем параметр width, слева добавляются пробелы, строка выравнивается по правому краю; • ljust(width) : когда длина строки в Python меньше, чем параметр width, справа от неё добавляются пробелы для дополнения значения width, при этом происходит выравнивание строки по левому краю; • find(str[, start [, end]) : происходит возвращение индекса подстроки в строку в Python. В том случае, если подстрока не найдена, выполняется возвращение числа -1; • center(width) : когда длина строки в Python меньше, чем параметр width, слева и справа добавляются пробелы (равномерно) для дополнения значения width, причём происходит выравнивание строки по центру; • split([delimeter[, num]]) : строку в Python разбиваем на подстроки в зависимости от разделителя; • replace(old, new[, num]) : в строке одна подстрока меняется на другую; • join(strs) : строки объединяются в одну строку, между ними вставляется определённый разделитель.
Обрабатываем строку в Python
Представим, что ожидается ввод числа с клавиатуры. Перед преобразованием введенной нами строки в число можно легко проверить, введено ли действительно число. Если это так, выполнится операция преобразования. Для обработки строки используем такой метод в Python, как isnumeric() :
string = input("Введите какое-нибудь число: ") if string.isnumeric(): number = int(string) print(number)Следующий пример позволяет удалять пробелы в конце и начале строки:
string = " привет мир! " string = string.strip() print(string) # привет мир!Так можно дополнить строку пробелами и выполнить выравнивание:
print("iPhone 7:", "52000".rjust(10)) print("Huawei P10:", "36000".rjust(10))В консоли Python будет выведено следующее:
iPhone 7: 52000 Huawei P10: 36000Поиск подстроки в строке
Чтобы в Python выполнить поиск в строке, используют метод find() . Он имеет три формы и возвращает индекс 1-го вхождения подстроки в строку: • 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 # ищем с десятого индекса index = welcome.find("wor",10) print(index) # 21 # ищем с 10-го по 15-й индекс index = welcome.find("wor",10,15) print(index) # -1Замена в строке
Чтобы в Python заменить в строке одну подстроку на другую, применяют метод replace() : • replace(old, new): подстрока old заменяется на new; • replace(old, new, num): параметр num показывает, сколько вхождений подстроки old требуется заменить на new.
Пример замены в строке в Python:
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Разделение на подстроки в Python
Для разделения в Python используется метод split() . В зависимости от разделителя он разбивает строку на перечень подстрок. В роли разделителя в данном случае может быть любой символ либо последовательность символов. Этот метод имеет следующие формы: • split() : в роли разделителя применяется такой символ, как пробел; • split(delimeter) : в роли разделителя применяется delimeter; • split(delimeter, num) : параметром num указывается, какое количество вхождений delimeter применяется для разделения. При этом оставшаяся часть строки добавляется в перечень без разделения на подстроки.
Соединение строк в Python
Рассматривая простейшие операции со строками, мы увидели, как объединяются строки через операцию сложения. Однако есть и другая возможность для соединения строк — метод 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Метод str.replace() в Python, меняет подстроку/символ в строке
Производит поиск и замену подстроки (символа) в строке
Синтаксис:
str.replace(old, new[, count])Параметры:
- old - str , подстрока или символ который меняем
- new - str , подстрока или символ на который меняем
- count - int , сколько раз меняем
Возвращаемое значение:
- измененная копия строки.
Описание:
Метод str.replace() вернет копию строки, в которой все вхождения подстроки old заменены на подстроку new .
Если указан необязательный аргумент count , заменяются только первые вхождения count .
Примечание. Производить поиск и замену подстроки/символа в строке можно так же при помощи регулярных выражений, используя функцию re.sub() .
Общие примеры замены подстроки/символа в строке.
# замена обратных кавычек в строке >>> x = 'все вхождения подстроки `old` заменены на подстроку `new`' >>> x.replace('`', '-') # 'все вхождения подстроки -old- заменены на подстроку -new-' # замена обратных кавычек с ограничением в 2 замены >>> x = '2 вхождения подстроки `old` заменены на подстроку `new`' >>> x.replace('`', '~', 2) # '2 вхождения подстроки ~old~ заменены на подстроку `new`' # замена нескольких значений >>> x.replace('old', 'старая').replace('new', 'новая') # 'все вхождения подстроки `старая` заменены на подстроку `новая`'
Замены нескольких значений в строке одной операцией.
Для замены нескольких разных символов/подстрок в одной операции (множественная замена) необходимо определить функцию, которая будет принимать исходную строку и список символов/подстрок, каждая со своим новым значением. Символы/подстроки с новыми значениями можно передавать разными способами, например как список двойных кортежей в виде [('old', 'new'), . ] или как словарь, где ключ будет старым значением, а значение - новым . В зависимости от того, в каком виде передаются значения, будет строится логика извлечения этих значений для осуществления замены в исходной строке.
В примере будем передавать символы/подстроки с их новыми значениями в виде кортежа, так как он дает больше гибкости. Гибкость будет состоять в том, что в примере будет возможность добавления количества замены каждого символа/подстроки в строке.
# примерная реализация функции множественной замены в строке # здесь еще нужно подумать над проверкой типов в кортежах . def replace(line, old_new_num): # при итерации по списку распаковываем кортежи на # старое и новое значения, а так же `n` - количество замен for vals in old_new_num: # если кортежа имеет 3 элемента, # значит присутствует количество замен if len(vals) == 3: # распаковываем кортеж old, new, n = vals # передаем аргументы методу и line = line.replace(old, new, n) elif len(vals) == 2: # распаковываем кортеж old, new = vals line = line.replace(old, new) else: # если в кортеже НЕ 2 или 3 элемента, # то поднимаем исключение raise 'кортеж должен состоять из 2-х или 3-х элементов' return line # сохраняем функцию в файл test.py и запускаем # $ python3 -i temp.py # исходная строка >>> line = 'абра-абра-кад-абра' # элементы кортежа означают: # ('заменяемое значение','новое значение', количество замен в строке) >>> replace_val = [('а', 'A', 3), ('б', 'Б'), ('кад', 'КАД')] >>> new_line = replace(line, replace_val) >>> new_line # 'AБрA-AБра-КАД-аБра'
Из примера видим, что новая функция replace() работает как и ожидается, а именно символ 'а' заменился 3 раза, символ 'б' и подстрока 'кад' заменились по количеству совпадений.
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Метод str.capitalize(), первая буква в строке заглавная
- Метод str.casefold(), сворачивает регистр строки
- Метод str.center(), выравнивает строку по центру
- Метод str.count(), считает совпадения в строке
- Метод str.encode(), преобразует строку в байты
- Метод str.endswith(), совпадение с концом строки
- Метод str.expandtabs(), меняет табуляцию на пробел
- Метод str.find(), индекс первого совпадения в строке
- Метод str.format(), форматирует строку
- Метод str.format_map()
- Метод str.index(), индекс первого совпадения подстроки
- Метод str.isalnum(), строка состоит из цифр и букв
- Метод str.isalpha(), строка состоит только из букв
- Метод str.isascii(), все символы в строке являются ASCII
- Метод str.isdecimal(), проверяет строку на десятичное число
- Метод str.isdigit(), строка состоит только из цифр
- Метод str.isidentifier() проверяет строку на идентификатор Python
- Метод str.islower( ), проверяет строку на нижний регистр
- Метод str.isnumeric(), проверяет строку на числовые символы
- Метод str.isprintable(), проверяет на доступность для печати
- Метод str.isspace(), является ли строка пробелом
- Метод str.istitle(), проверяет наличие заглавных букв в словах
- Метод str.isupper(), проверяет строку на верхний регистр
- Метод str.join(), объединяет список строк
- Метод str.ljust(), ровняет строку по левому краю
- Метод str.lower(), строку в нижний регистр
- Метод str.lstrip(), обрезает символы в начале строки
- Метод str.maketrans(), таблица символов для str.translate()
- Метод str.partition(), делит строку по первому совпадению
- Метод str.removeprefix(), удаляет префикс строки
- Метод str.removesuffix(), удаляет суффикс строки
- Метод str.replace(), меняет подстроку/символ в строке
- Метод str.rfind(), индекс последнего совпадения подстроки
- Метод str.rindex(), индекс последнего совпадения в строке
- Метод str.rjust(), ровняет строку по правому краю
- Метод str.rpartition(), делит строку по последнему совпадению
- Метод str.rsplit(), делит строку справа
- Метод str.rstrip(), обрезает символы на конце строки
- Метод str.split(), делит строку по подстроке
- Метод str.splitlines(), делит текст по символу '\n'
- Метод str.startswith(), совпадение с началом строки
- Метод str.strip(), обрежет строку с обоих концов
- Метод str.swapcase(), сменит регистр символов в строке
- Метод str.title(), каждое слово с заглавной буквы
- Метод str.translate(), транслирование строки
- Метод str.upper(), переведет строку в верхний регистр
- Метод str.zfill(), дополнит строку нулями
- Форматирование строк в стиле printf
- F-string. Форматированные строки
Способы поиска и замены символа в строке с помощью Python
В этом примере мы используем метод `replace()` для замены символа в строке. Мы передаем два аргумента - первый это символ, который мы хотим найти, а второй - символ, на который мы хотим заменить. В результате получается новая строка, в которой указанный символ заменен.
Детальный ответ
Как найти и заменить символ в строке Python
В программировании, возникает множество ситуаций, когда нам необходимо найти определенные символы в строке и заменить их на другие. В языке программирования Python существуют различные способы выполнить такую задачу. В этой статье мы рассмотрим несколько методов для поиска и замены символов в строке в Python.
Метод replace()
Метод replace() является одним из наиболее простых способов замены символов в строке. Он позволяет заменить все вхождения одного символа или строки на другой символ или строку.
string = "Привет, мир!" new_string = string.replace("и", "е") print(new_string) # "Преет, мер!"
В приведенном примере мы использовали метод replace() для замены символа "и" на символ "е" в строке "Привет, мир!". Результатом выполнения программы будет строка "Преет, мер!".
Метод translate()
Метод translate() позволяет заменить символы в строке, основываясь на таблице перевода. Для использования этого метода необходимо создать объект класса str.maketrans() , указав символы, которые нужно заменить, и символы, на которые они должны быть заменены. Затем метод translate() применяется к строке, которую нужно изменить.
string = "Привет, мир!" translation_table = str.maketrans("и", "е") new_string = string.translate(translation_table) print(new_string) # "Преет, мер!"
В данном примере мы создали таблицу перевода, в которой символ "и" заменяется на символ "е". Затем мы применили метод translate() к строке "Привет, мир!". В результате получаем строку "Преет, мер!".
Метод re.sub()
Модуль re в языке Python предоставляет функцию sub() , которая позволяет заменить символы в строке, используя регулярные выражения. Для этого необходимо передать в функцию шаблон поиска, на что заменять найденные символы и строку, в которой нужно выполнить замену.
import re string = "Привет, мир!" new_string = re.sub("и", "е", string) print(new_string) # "Преет, мер!"
В данном примере мы использовали функцию sub() из модуля re для замены символа "и" на символ "е" в строке "Привет, мир!". Результатом выполнения программы будет строка "Преет, мер!".
Метод replace() vs translate() vs re.sub()
- Метод replace() прост в использовании, но может быть неэффективен при замене множества символов или при использовании регулярных выражений.
- Метод translate() быстр и эффективен при замене нескольких символов одновременно, но может быть сложным для понимания и использования в сложных сценариях.
- Метод re.sub() наиболее мощный, так как позволяет использовать регулярные выражения для поиска и замены символов, но требует знания регулярных выражений и может быть медленным при обработке больших строк.
Вам следует выбрать метод в зависимости от требований вашей конкретной задачи.
Заключение
В данной статье мы рассмотрели несколько методов для поиска и замены символов в строке в языке программирования Python. Методы replace() , translate() и re.sub() предоставляют различные возможности и подходят для различных сценариев использования. При выборе метода следует учитывать особенности задачи и требования проекта. Надеюсь, эта статья помогла вам лучше разобраться в теме и найти подходящий метод для вашей задачи.
Замена символа в строке в Python — replace и другие методы
Строка в Питоне относится в неизменяемому типу данных — после создания не получится что-то поменять в ней. Поэтому замена нескольких символов в Python относится к одним из самых популярных операций при работе с текстовыми данными. В статье мы расскажем о методе String replace — как работает функция, что нужно сделать, что заменить один символ на другой. Раскроем особенности и других способов для замены символа в строке в Python, используя примеры.
Строками в Python называют упорядоченную последовательность символов. Их используют для хранения и представления информации. С помощью строк можно описать то, что представлено в текстовой форме. Их также можно складывать между собой и извлекать последовательность цифр или букв из заданного промежутка. Но вот редактировать данные не получится. Существуют определённые методы изменения данных, которые быстро помогают заменить первый или последний символ в строке, если это необходимо. Используя их, также можно поменять и другие символы.
Метод replace() в Python
Функция или метод replace() в Python используется для замены всех вхождений подстроки или строки полностью. Он возвращает новую строку, заменяя указанные символы обновлёнными значениями. String replace обладает таким синтаксисом:
str.replace(old, new[, count])
- String: строка, в которой нужно поменять символ или изменить подстроку.
- Old: символ или подстрока, требующая подмены.
- New: новая строка, на которую надо заменить найденную выше подстроку или символы.
- Count (необязательный аргумент): то количество замен, которые необходимо выполнить. Без указания аргумента все вхождения будут заменены.
Хотите стать Python-разработчиком, но не знаете, с чего начать? Онлайн-курсы программирования — всегда хороший вариант для старта. Лучшие курсы с сайта tutortop:
- «Python-разработчик с нуля» от Skypro
- «Разработчик на Python» от Eduson Academy
- «Python-разработчик с нуля» от Нетологии
Сейчас мы дарим 10 000 ₽ на обучение в любой из школ-партнёров, представленных на сайте tutortop.
Получите онлайн-курсы стоимостью 20 000 ₽ абсолютно бесплатно и промокод 10 000 ₽ на обучение.
Нажимая на кнопку «Получить», я соглашаюсь на обработку моих персональных данных.
Спасибо! Мы получили вашу заявку. Скоро с вами свяжемся.
Пример применения метода replace() для замены символа в строке:
Этот параметр также можно использовать для изменения слов в строке:
g = ‘Python is my favorite programming language. I love Python!’
new_g = g.replace(‘Python’, ‘PHP’)
# ‘PHP is my favorite programming language. I love PHP!’
Вы можете проверить replace на умение заменять сразу несколько букв и чисел одновременно. Спойлер — он с этим справится. В примере мы заменяем все вхождения a, b и c на символ y:
new_g = g.replace(‘a’, ‘y’).replace(‘b’, ‘y’).replace(‘c’, ‘y’)
Доступно и изменение только первого или только последнего символа или слова. Сделать это довольно просто:
g = ‘Python is my favorite programming language. I love Python!’
new_g = g.replace(‘Python’, ‘PHP’, 1)
# ‘PHP is my favorite programming language. I love Python!’
Поиск и замена нескольких значений:
names = [‘Anna’, ‘Emma’, ‘Oleg’, ‘Dmitriy’]
# в новый список записываем элементы начального списка, измененные благодаря replace
new_list = [_.replace(«A», «i», ) for names]
# Вывод: [InnI’, ‘Emmi’, ‘Oleg’, ‘Dmitriy’]
Функцию replace используют чаще других — менять символы в строках можно разными способами, а также выставлять ограничения для количества замен в коде. Но есть и другие методы, которые тоже подойдут для осуществления этой операции в Питоне — о них расскажем ниже.
В нашем блоге есть полезные статьи для Python-разработчиков, которые находятся в процессе обучения или совершенствуют свои навыки по созданию программ — например, материал о функциях append() и extend() для добавления элементов в список, или статья про установку Python на компьютер.

Метод translate() для замены символа в Питоне
Вы можете выполнять замены, используя таблицу перевода символов. В этом плане translate полезен для изменения нескольких букв или цифр или исполнения более сложных и составных операций с использованием различных правил.
- String: это исходная строка, где надо поменять символы
- Table: это таблица перевода текстовых данных — это может быть словарь или объекта вроде str.maketrans, созданный с использованием метода str.maketrans().
- Deletechars (необязательный аргумент): строка с символами, которые необходимо убрать из исходной строки.
Как translate помогает заменить символы в строке:
# Создание таблицы перевода символов
# Замена символа «,» на «!» с использованием таблицы перевода
В этом примере таблица перевода создана с помощью метода str.maketrans() — указана символ «,» как символ для изменения и символ «!». Этот метод позволяет выполнить замену именно в исходной строке. Есть ещё метод maketrans(), который создаёт таблицу сопоставления между первым символом и заменой для него.
Описанные методы схожи по функционалу, но всё же отличаются друг от друга. Например, translate() может изменить лишь одиночные символы в строке, а replace() позволяет заменять целые строки различной длины. Также он может поменять нескольких букв за один вызов, replace() заменяет только одну подстроку за раз. Нельзя точно сказать, какой из этих вариантов лучше — для каждой из задач подходит свой метод. Но если вам нужно заменить несколько цифр или букв, лучше использовать translate(). Возможности replace() широки, в тому же функция выигрывает в оптимизации времени.
Если ваша цель — стать программистом, наша подборка топовых курсов поможет вам достичь успеха и реализовать свои профессиональные амбиции в этой области.
Регулярные выражения для замены символов в строке
Ещё один вариант — регулярные выражения или Regular Expressions. Этот инструмент по работе с текстовыми данными пользуется широкой популярностью и также применяется для перемены символов. Чтобы поменять символ или подстроку можно воспользоваться функцией re.sub() из модуля re.
re.sub(шаблон, замена, строка)
- Шаблон: регулярное выражение, указывающее на символы, подстроки, которые необходимо найти в строке для изменения.
- Замена: строка, на которую будут заменены найденные символы или подстроки.
- Строка: стартовый вариант в котором меняются символы.
# Замена символа «,» на «!» — регулярное выражение

Итоги
В строки в языке программирования Python нельзя внести изменения просто так — для этого нужно использовать специальные методы. В статье мы рассказали о самых простых и популярных из них — replace, translate и функции re.sub(). Выбор наиболее подходящего варианта зависит от задачи, которая стоит перед вами — замена нескольких символов, замена подстроки или ограничение количества замен для более точного результата. Перед использованием программы рекомендуем изучить политику конфиденциальности по ссылке.
Анна Уженкова
Копирайтер. Увлекается литературой и любит разбираться в сложных вещах. В работе ценит сам процесс — тексты, это не просто тексты, а возможность на что-то повлиять. Среди тем, которые нравятся, — образование, психология, IT.
Сергей Пронин
Разработчик на C++, Python, JavaScript и PHP, разбирается в Machine Learning.
Дарим 30+ курсов стоимостью 100.000 ₽ от топовых школ!
Оставьте номер, чтобы получить доступ бесплатно
Получить доступ
![]()
Получить в WhatsApp
Нажимая на кнопку, я соглашаюсь с Пользовательским соглашением
Спасибо! Открыли вам доступы по ссылке
Отзывы на лучшие школы
Из плюсов:
1. Курс полноценный, действительно много нового и интересного
2. На удобной платформе, учеба вся из дома
3. есть менторы, быстро отвечают и помогают
4. есть ссылки на дополнительные источники, есть вебинары онлайн и в записи - то есть обучение разностороннее - все зависит от тебя, к тому же есть всякие мини-конкурсы и общение на другой специальной платформе с менторами и сокурсниками
Из минусов:
1. бывают неполадки и доработки на платформе
2. материал действительно иногда сложный и надо думать, но всегда есть ответы или ментор, который все решит, это пожалуй немного расслабляет, пока не поняла приучила ли я себя решать сложные задачи сама
3. некоторая информация устарела, но такой очень мало
4. нет новогодних каникул, всего каникул очень мало и они недельные( в остальном обучение беспрерывное
Но в целом я очень довольна, надеюсь и дальше курс меня не разочарует и я смогу найти применение своим знаниям уже в профессии
в целом
В 2021 году прошел курс проф.переподготовки ""Системный администратор"" .Курс дал много полезных знаний, строго по делу, ничего лишнего, никакой воды. Обучение начинается с азов, даже новичку, не сложно разобраться.
В курсе есть все - теория, домашние задания, обратная связь от преподавателей.
У ДЗ есть дедлайны, это мотивирует, не дает расслабиться. Практическая часть максимально продуктивна и приближенной к реалиям, безусловно его плюс.
Вообще хочется поблагодарить весь преподавательский коллектив. СПАСИБО за умение донести информацию)
Однозначно рекомендую для старта.
"В ногу со временем"
Здравствуйте! Я с удовольствием напишу отзыв о курсе "Нейросети: от принципов к практике" от онлайн-школы Zerocoder.ru.
Курс просто великолепен! Я был приятно удивлен тем, насколько легко было учиться. Онлайн школа Zerocoder.ru сделала все возможное, чтобы сделать курс с понятными примерами, объясняющими основные принципы и технологии нейронных сетей. Он 100% подойдёт даже тем, у кого не было никакого опыта в области нейронных сетей.
Курс был построен очень логично, с введением в понятия и историю нейронных сетей, с базой книг и художественных фильмов по теме, и постепенного перехода к более сложным понятиям и практическим примерам. Это помогло мне постепенно углублять свои знания и наращивать свой опыт в использовании нейронных сетей. Я особенно оценил практический подход к обучению, который мне сразу же оказал влияние на результаты .
Содержание курса было крайне актуальным, я чувствовал себя как будто бы учусь в престижном университете. Ведь нейронные сети являются одной из самых динамично развивающихся областей науки и технологий, и информация регулярно обновляется.
Я также хотел отметить основателей и преподавателей онлайн-школы Zerocoder.ru. Они являются не только экспертами в области нейронных сетей, но и обладают значительными коммуникативными навыками, что сделало процесс обучения еще более полезным и эффективным.
Короче говоря, я очень доволен курсом "Нейросети: от начала к практике" от онлайн-школы Zerocoder.ru. Я обладаю обширными знаниями в области нейронных сетей, которые я уже применил на практике в своей работе. Если вы хотите изучить нейронные сети и применить их на практике обязательно пройдите этот курс.
