Любые строковые данные можно заменить другой строкой в Python с помощью метода replace(). Но если вы хотите заменить любую часть строки на соответствие определенному шаблону, вам необходимо использовать регулярное выражение. Он используется для поиска определенного шаблона в конкретном строковом значении, и строка будет заменена другой строкой, если будет найдено какое-либо совпадение. Python использует модуль ‘re’ для использования шаблона регулярного выражения в скрипте для поиска, сопоставления или замены. Использование шаблонов регулярных выражений для замены строк немного медленнее, чем обычный метод replace(), но многие сложные поиски и замены можно легко выполнить с помощью шаблона. Вы можете заменить строку различными способами, используя шаблон в Python. В этой статье показаны некоторые распространенные варианты использования шаблона для замены строки.
Список метасимволов:
Прежде чем использовать шаблон для замены строки, вы должны знать, как написать шаблон регулярного выражения. Вы можете использовать любое строковое значение в качестве шаблона для точного совпадения. Но для конкретного поиска вы должны написать шаблон регулярного выражения с использованием метасимвола. Список наиболее часто используемых метасимволов для написания шаблонов приведен ниже со смыслом.
Характер | Описание |
. | Используется для соответствия любому одиночному символу, кроме новой строки. |
^ | Используется для сопоставления любого символа или строки в начале строки. |
$ | Используется для сопоставления любого символа или строки в конце строки. |
+ | Используется для сопоставления одного или нескольких экземпляров шаблона. |
? | Используется для соответствия нулю или одному вхождению шаблона. |
() | Используется для группировки паттернов. |
{} | Используется для соответствия на основе нижнего или верхнего или нижнего и верхнего
пределы. |
[] | Используется для сопоставления символов на основе заданного диапазона. |
| | Используется для сопоставления шаблонов на основе логики OR. |
\ | Используется для определения определенных символов или не символов, цифр или нецифровые. |
Метод Replace:
В Python для замены строки используется метод sub() модуля re.
Синтаксис:
sub(pattern, replace, string, count=0, flags=0)
Здесь шаблон, замена и строка являются обязательными аргументами. Если шаблон совпадает с любой частью строки, он заменит часть значением замены аргумента. Два других аргумента необязательны. Некоторые варианты использования вышеупомянутых метасимволов с методом sub() показаны в следующих примерах замены строк.
Пример-1: заменить строку точным соответствием
Если вам известно точное строковое значение, которое вы хотите искать в основной строке, вы можете использовать значение поисковой строки в качестве шаблона в методе sub(). Создайте файл Python со следующим скриптом. Здесь строковое значение поиска — «дождливый», а заменяющее строковое значение — «солнечный».
#!/usr/bin/env python3 # Импортировать модуль регулярных выражений # Import regex module import re # Определить строку orgStr = "Это дождливый день" # Заменить строку repStr = re.sub("дождливый", "солнечный", orgStr) # Распечатать исходную строку print("Оригинальный текст:", orgStr) # Распечатать замененную строку print("Замененный текст:", repStr)
Пример-2: поиск и замена строки в начале
Создайте файл python со следующим сценарием, чтобы узнать об использовании ‘^’ в шаблоне регулярного выражения. Здесь ‘ ^ [A-Za-z] +’ используется в качестве шаблона поиска. Он будет искать все буквенные символы от A до Z и от a до z в начале текста и заменять его пустым значением. Замененная строка будет напечатана в верхнем регистре для метода upper().
#!/usr/bin/env python3 # Импортировать модуль регулярных выражений import re # Возьмите строку input originalText = input("Введите текст\n") # Замените строку на основе шаблона replacedText = re.sub('^[A-Za-z]+' , '', originalText).upper() # Распечатать замененную строку print("Замененный текст:", replacedText)
Вывод:
Здесь «Привет, добро пожаловать в andreyex» принимается как ввод, а слово «Привет» заменяется на ‘ ’ для шаблона.
Пример-3: поиск и замена строки в конце
Создайте файл python со следующим сценарием, чтобы узнать об использовании символа «$» в шаблоне регулярного выражения. Здесь ‘[ a-z0-9] + $’ используется в качестве шаблона в скрипте. Он будет искать все небольшие алфавитов и цифры в конце текста, и если возвращается true, то соответствующая часть будет заменена на строке «ru».
#!/usr/bin/env python3 # Импортировать модуль регулярных выражений import re # Возьмите строку input originalText = input("Введите URL-адрес\n") # Замените строку на основе шаблона replacedText = re.sub('[a-z0-9]+$' , 'ru', originalText) # Распечатать замененную строку print("Замененный текст:", replacedText)
Вывод:
Здесь «https://www.google.com» используется как вводимый текст, а после замены «https://www.google.ru» печатается как вывод.
Пример-4: поиск и замена определенной части строки
Создайте файл Python со следующим скриптом для поиска и замены части текста в том месте, где совпадает шаблон. Здесь список адресов электронной почты назначается в виде текста переменной с именем emails. ‘@[az]’ — шаблон для поиска. Он будет искать любую подстроку, начинающуюся с маленьких букв, за которыми следует символ «@». Если какая-либо подстрока совпадает, она заменит эту подстроку на @andreyex.
#!/usr/bin/env python3 # Импортировать модуль регулярных выражений import re # Определить строку emails = '\nadmin@google.ru\nmanager@yahoo.com \nandreyex@andreyex.ru' # Заменить конкретную часть строка на основе шаблона replacedText = re.sub('@[a-z]*', '@andreyex', emails) # Вывести исходную строку print("Первоначальный текст:", emails) # Печать замененных строк print("\nЗамененный текст:", replacedText)
Вывод:
Здесь каждая доменная часть адреса электронной почты, назначенная в тексте, заменена на «andreyex».
Вывод:
В этой статье показаны некоторые очень распространенные варианты использования шаблонов регулярных выражений для замены строк. В python существует множество других вариантов для написания различных типов простых и сложных шаблонов для поиска и замены строки текста.