Как заменить первое вхождение в питоне
Перейти к содержимому

Как заменить первое вхождение в питоне

  • автор:

Python: поиск подстроки, операции со строками. Как выполнять поиск в строке Python?

Python_Deep_5.6_site-5020-7250df.png

В этой статье поговорим про строки в 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

Заменить первое вхождение строки в Python

У меня есть пример строки. Как заменить первое вхождение этой строки в более длинную строку пустой строкой?

regex = re.compile('text') match = regex.match(url) if match: url = url.replace(regex, '') 

marks34 07 янв. 2011, в 19:19
Поделиться
Что вы ищете и заменяете? Что в этом url ?
BoltClock♦ 07 янв. 2011, в 17:54
Я хочу заменить первое вхождение 'text' в моей строке URL
marks34 07 янв. 2011, в 17:55
Поделиться:

2 ответа

Лучший ответ

Функция string replace() отлично решает эту проблему:

string.replace(s, old, new [, maxreplace])

Вернуть копию строки s, в которой все вхождения подстроки old заменены на new. Если задан необязательный аргумент maxreplace, заменяются первые вхождения maxreplace.

>>> u'longlongTESTstringTEST'.replace('TEST', '?', 1) u'longlong?stringTEST' 

virhilo 07 янв. 2011, в 19:02
Поделиться

Используйте re.sub , это позволяет вам указать count :

regex.sub('', url, 1) 

(Обратите внимание, что порядок аргументов replacement , original не противоположный, как можно было бы подозревать.)

Konrad Rudolph 07 янв. 2011, в 19:30
Поделиться

Ещё вопросы

  • 0 Масштабирование фона SVG
  • 1 Python преобразовать объект Redis в исходный тип данных
  • 1 Выражение. Вызовите группу, затем выберите?
  • 0 li.hover не меняет цвет
  • 1 Почему вызовы вызванных методов не обрабатывают все исключения как необработанные исключения в .Net 4.0+?
  • 0 MySQL: mysqli_fetch_array ()
  • 0 Medoo - Обновление строки таблицы, соответствующей нескольким полям
  • 1 Каждый из next () и list () перебирает генератор с изменяемым объектом по-разному
  • 1 Несоответствие числа образцов ошибки из Python
  • 0 Как определить некоторые переменные конфигурации
  • 1 Recycler view не отвечает на клики
  • 1 Поиск нескольких атрибутов в Монго с Метеором
  • 1 GSON преобразует ранее сохраненный список в ArrayList LinkedTreeMaps при получении из общих префов
  • 0 Отправка содержимого базы данных по электронной почте в ASP.Net
  • 1 Как разрешить исключение com.android.builder.dexing.DexArchiveBuilderException?
  • 1 Как нарисовать пользовательскую графику на карте, используя ArcGIS JavaScript API?
  • 1 Разобрать данные и представить изображение PNG
  • 1 Альтернативное кодирование относительно isConnectingOrConnecting?
  • 1 pandas.date_range, приводящий к повторяющемуся «липкому» предупреждению: «414: FutureWarning:« сводка »устарела и будет удалена в будущей версии».
  • 0 Многопользовательская архитектура
  • 1 Может ли использование обнуляемых структур улучшить производительность?
  • 0 Попытка заполнить выпадающий список JQuery и AJAX
  • 0 Значение поля ввода Javascript не определено
  • 1 Передача метода в lodash с помощью vue дает 'Ожидаемая функция'
  • 0 C ++ Соединение двух разделенных на трубы файлов по ключевым полям
  • 1 Я не понимаю, как использовать «это» и «это» в Java
  • 0 Angular JS - получить высоту элемента в директиве перед визуализацией представления
  • 0 «Неизвестный сервер MySQL» при использовании Flask в Python
  • 0 Как внедрить контроллер как зависимость при использовании нотации «Контроллер как»?
  • 1 Угадай номер игры в Java
  • 0 Найти брата текущего элемента массива
  • 0 Использование директивы для присоединения объекта с доступом к области видимости к элементу HTML
  • 0 Как выбрать, где внешний ключ не существует в других столбцах, и сравнить даты из таблиц, которые не связаны напрямую
  • 1 Проблемы с предсказанием движения снаряда по методу Эйлера
  • 1 Проблема с анимацией Java Swing
  • 0 Добавление двух карт Google на одну страницу HTML
  • 0 Как я могу сохранить $ location.hash () от добавления / сразу после #?
  • 0 Tumblr фотосет, блокирующий HTML
  • 0 Цвет наложения JQuery FancyBox
  • 0 Привести итератор к другому типу
  • 0 вернуть все уникальные каталоги в иерархии
  • 0 уникальный указатель в связанном стеке
  • 0 отправляет массив всех имен элементов по классам
  • 1 Glassfish 4.0 и sapjco3
  • 0 Codeigniter Pagination не работает должным образом
  • 1 Vue JS - Reactivity $ set свойство в массиве объектов
  • 1 Связывание метки с переменной
  • 3 ImportError: нет модуля с именем 'yaml'
  • 0 Как использовать список функций, чтобы указать на функцию-член в векторном объекте?
  • 1 Напишите скрипт, который запускает команду с аргументами

Замена вхождения подстроки в строке Python

Замена всех или n вхождений подстроки в заданной строке - довольно распространенная проблема манипуляций со строками и обработки текста в целом. К счастью, большинство этих задач упрощается в Python благодаря огромному набору встроенных функций, включая эту.

Допустим, у нас есть строка, содержащая следующее предложение:

The brown-eyed man drives a brown car. 

Наша цель - заменить слово "brown" на "blue" :

The blue-eyed man drives a blue car. 

В этой статье мы будем использовать функцию replace() , а также функции sub() и subn() с шаблонами для замены всех вхождений подстроки из строки.

replace()

Самый простой способ сделать это - использовать встроенную функцию - replace() :

string.replace(oldStr, newStr, count) 

Первые два параметра являются обязательными, а третий - необязательным. oldStr - это подстрока, которую мы хотим заменить на newStr . Стоит отметить, что функция возвращает новую строку с выполненным преобразованием, не затрагивая исходную.

string_a = "The brown-eyed man drives a brown car." string_b = string_a.replace("brown", "blue") print(string_a) print(string_b) 

Мы выполнили операцию над string_a , упаковали результат в string_b и распечатали их оба.

Этот код приводит к:

The brown-eyed man drives a brown car. The blue-eyed man drives a blue car. 

Опять же, строка в памяти, на которую указывает string_a , остается неизменной. Строки в Python неизменяемы, что просто означает, что вы не можете изменить строку. Однако вы можете повторно присвоить ссылочной переменной новое значение.

Чтобы, казалось бы, выполнить эту операцию на месте, мы можем просто переназначить string_a после операции:

string_a = string_a.replace("brown", "blue") print(string_a) 

Здесь новая строка, созданная методом replace() , присваивается переменной string_a .

Заменить n вхождений подстроки

А что, если мы не хотим изменять все вхождения подстроки? Что, если мы хотим заменить первые n?

Вот тут и появляется третий параметр функции replace() . Он представляет количество подстрок, которые будут заменены. Следующий код заменяет только первое вхождение слова "brown" на "blue" :

string_a = "The brown-eyed man drives a brown car." string_a = string_a.replace("brown", "blue", 1) print(string_a) 

И в консоли у нас будет:

The blue-eyed man drives a brown car. 

По умолчанию третий параметр настроен на изменение всех вхождений.

Вхождения подстроки в регулярных выражениях

Чтобы еще больше обострить проблему, предположим, что мы хотим не только заменить все вхождения определенной подстроки, но и заменить все подстроки, соответствующие определенному шаблону. Даже это можно сделать с помощью однострочного кода, используя регулярные выражения и модуль стандартной библиотеки re .

Регулярные выражения - сложная тема с широким спектром использования в информатике, поэтому мы не будем вдаваться в подробности в этой статье.

По сути, регулярное выражение определяет шаблон. Например, предположим, что у нас есть текст о людях, владеющих кошками и собаками, и мы хотим заменить оба термина словом "pet" . Во-первых, нам нужно определить шаблон, который соответствует обоим терминам, например - (cat|dog) .

Использование функции sub()

Разобравшись с шаблоном, мы собираемся использовать функцию re.sub() со следующим синтаксисом:

re.sub(pattern, repl, string, count, flags) 

Первый аргумент - это шаблон, который мы ищем (строка или объект Pattern ), repl это то, что мы собираемся вставить (может быть строкой или функцией; если это строка, обрабатываются любые escape-символы в ней обратной косой чертой) и string это строка, в которой мы ищем.

Необязательными аргументами являются count и flags , которые указывают, сколько вхождений необходимо заменить, и флаги, используемые для обработки регулярного выражения, соответственно.

Если шаблон не соответствует ни одной подстроке, исходная строка будет возвращена без изменений:

import re string_a = re.sub(r'(cat|dog)', 'pet', "Mark owns a dog and Mary owns a cat.") print(string_a) 

В консоле распечатается:

Mark owns a pet and Mary owns a pet. 
Сопоставление с шаблоном без учета регистра

Например, чтобы выполнить сопоставление с шаблоном без учета регистра, мы установим для параметра flag значение re.IGNORECASE :

import re string_a = re.sub(r'(cats|dogs)', "Pets", "DoGs are a man's best friend", flags=re.IGNORECASE) print(string_a) 

Теперь любая комбинация регистра "dogs" также будет включена. При сопоставлении шаблона с несколькими строками, чтобы избежать его копирования в нескольких местах, мы можем определить объект Pattern . У них также есть функция sub() с синтаксисом:

Pattern.sub(repl, string, count) 
Использование объектов шаблона

Давайте определим Pattern для кошек и собак и проверим пару предложений:

import re pattern = re.compile(r'(Cats|Dogs)') string_a = pattern.sub("Pets", "Dogs are a man's best friend.") string_b = pattern.sub("Animals", "Cats enjoy sleeping.") print(string_a) print(string_b) 

Что дает нам результат:

Pets are a man's best friend. Animals enjoy sleeping. 
Функция subn()

Также есть метод subn() с синтаксисом:

re.subn(pattern, repl, string, count, flags) 

Функция subn() возвращает кортеж со строкой и числом совпадений в строке поиска:

import re string_a = re.subn(r'(cats|dogs)', 'Pets', "DoGs are a mans best friend", flags=re.IGNORECASE) print(string_a) 

Кортеж выглядит так:

('Pets are a mans best friend', 1) 

Объект Pattern содержит аналогичную функцию subn() :

Pattern.subn(repl, string, count) 

И он используется очень похожим образом:

import re pattern = re.compile(r'(Cats|Dogs)') string_a = pattern.subn("Pets", "Dogs are a man's best friend.") string_b = pattern.subn("Animals", "Cats enjoy sleeping.") print(string_a) print(string_b) 
("Pets are a man's best friend.", 1) ('Animals enjoy sleeping.', 1) 

Вывод

Python предлагает простые функции для обработки строк. Самый простой способ заменить все вхождения данной подстроки в строке - использовать функцию replace() .

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

Источник:

Заменить в строке S первое вхождение строки S1 на строку S2

Заменить в строке S первое вхождение строки S1 на строку S2.
Даны строки S, S1 и S2. Заменить в строке S первое вхождение строки S1 на строку S2.

Заменить в строке S первое вхождение строки S1 на строку S2
Помогите решить задачу: Даны строки S, S1 и S2. Заменить в строке S первое вхождение строки S1 на.

Заменить в строке S первое вхождение строки S1 на строку S2
Дано строки S, S1, S2. Заменить в строке S первое вхождение строки S1 на строку S2.

Заменить в строке S первое вхождение строки S1 на строку S2
Даны строки S, S1 и S2. Заменить в строке S первое вхождение строки S1 на строку S2. Задача.

1291 / 908 / 479
Регистрация: 05.12.2013
Сообщений: 3,073
Условие задачи приведи
Регистрация: 15.03.2018
Сообщений: 23
от условие: Даны строки S, S1 и S2. Заменить в строке S первое вхождение строки S1 на
строку S2.
1291 / 908 / 479
Регистрация: 05.12.2013
Сообщений: 3,073

1 2 3 4 5
s = input('S=') s1 = input('S1=') s2 = input('S2=') print(s.replace(s1, s2, 1))

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Заменить в строке s первое вхождение строки s1 на строку s2
Даны строки s s1 и s2.заменить в строке s первое вхождение строки s1 на строку s2.что значит.

Заменить в строке S первое вхождение строки S1 на строку S2
Знатоки! Помогите мне пожалуйста: Даны строки S, S1 и S2. Заменить в строке S первое вхождение.

Заменить в строке S первое вхождение строки S1 на строку S2
Даны строки S, S1 и S2. Заменить в строке S первое вхождение строки S1 на строку S2. заранее спасибо

Заменить в строке S первое вхождение строки S1 на строку S2
Даны строки S, S1 и S2. Заменить в строке S первое вхождение строки S1 на строку S2.

Заменить в строке S первое вхождение строки S1 на строку S2
Даны строки S, S1 и S2. Заменить в строке S первое вхождение строки S1 на строку S2 .

Заменить в строке первое вхождение строки S1 на строку S2
Даны строки S, S1 и S2. Заменить в строке S первое вхождение строки S1 на строку S2. помогите

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

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