Правила замены текста

Правила замены текста позволяют очищать и нормализовать данные в ячейках или тегах до того, как они попадут в маппинг полей и правила извлечения. Это первый этап обработки данных. С помощью замены можно удалять лишние символы, исправлять опечатки, приводить текст к единому формату, заменять сокращения на полные названия и многое другое. В зависимости от типа файла в настройках будет либо номер столбца, для csv, xls\xlsx файлов, либо xpath\json path выражения для остальных форматов. общая логика неизменна.

Обратите внимание

В примерах с регулярными выражениями типа Паттерн = r'^[A-Za-z]+-\d+$' само выражение, которое нужно вводить в форму располагается между двумя одинарными кавычками, то есть ^[A-Za-z]+-\d+$

Когда использовать правила замены текста

В ячейках есть лишние пробелы в начале или конце

Нужно удалить HTML-теги из описаний

Требуется заменить сокращения на полные слова ("шт." → "штука")

Необходимо привести текст к единому регистру

В данных встречаются разные варианты написания одного и того же

Нужно удалить служебную информацию в скобках

Требуется нормализовать разделители (запятые на точки, и т.д.)

Типы замены текста

Тип 1. Точная замена

Простая замена одного фрагмента текста на другой. Подходит когда нужно заменить конкретную подстроку.

Пример: Заменить "шт." на "штука" во всем тексте.

Настройки: тип замены = точная замена, что заменить = "шт.", на что заменить = "штука"

Тип 2. Регулярное выражение

Мощный тип замены с использованием регулярных выражений. Позволяет находить сложные паттерны и заменять их с использованием групп захвата.

Пример: Удалить всё, что в скобках, включая сами скобки.

Настройки: тип замены = регулярное выражение, что заменить = r'\s*[)]∗[)]∗', на что заменить = ""

Структура правила замены текста

Каждое правило содержит следующие параметры:

Столбец - номер столбца (для CSV/Excel), в котором выполняется замена

Что заменить - текст или регулярное выражение для поиска

На что заменить - текст для замены (для regex можно использовать $1, $2 и т.д.)

Тип замены - точная замена или регулярное выражение

Описание - необязательное описание для чего это правило

Активно - включено ли правило

Порядок - порядок применения правил (от меньшего к большему)

Примеры для CSV/EXCEL

Пример 1. Удаление лишних пробелов

Часто в данных встречаются лишние пробелы в начале, конце или между словами.

Правило:

Столбец = 2 (столбец с названием товара)

Что заменить = r'^\s+|\s+$'

На что заменить = ""

Тип замены = регулярное выражение

Порядок = 1

Результат: " Дрель Bosch " → "Дрель Bosch"

Пример 2. Удаление нескольких пробелов подряд

После удаления пробелов в начале и конце могут остаться множественные пробелы между словами.

Правило:

Столбец = 2

Что заменить = r'\s{2,}'

На что заменить = " "

Тип замены = регулярное выражение

Порядок = 2

Результат: "Дрель Bosch GSB" → "Дрель Bosch GSB"

Пример 3. Замена сокращений

Приведение сокращений к полному виду для единообразия.

Правило 1:

Столбец = 3 (столбец с единицами измерения)

Что заменить = "шт"

На что заменить = "штука"

Тип замены = точная замена

Порядок = 1

Правило 2:

Столбец = 3

Что заменить = "кг"

На что заменить = "килограмм"

Тип замены = точная замена

Порядок = 2

Правило 3:

Столбец = 3

Что заменить = "г"

На что заменить = "грамм"

Тип замены = точная замена

Порядок = 3

Пример 4. Удаление HTML-тегов из описания

Если в описаниях товаров встречаются HTML-теги, их нужно удалить.

Правило:

Столбец = 5 (столбец с описанием)

Что заменить = r'<[^>]+>'

На что заменить = ""

Тип замены = регулярное выражение

Порядок = 1

Результат: "Дрель <b>Bosch</b> профессиональная" → "Дрель Bosch профессиональная"

Пример 5. Удаление информации в скобках

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

Правило:

Столбец = 2

Что заменить = r'\s*[)]∗[)]∗'

На что заменить = ""

Тип замены = регулярное выражение

Порядок = 1

Результат: "Дрель Bosch (профессиональная, с кейсом)" → "Дрель Bosch"

Пример 6. Замена разных вариантов написания бренда

Приведение всех вариантов написания бренда к единому виду.

Правило 1:

Столбец = 4 (столбец с брендом)

Что заменить = r'BOSCH|Bosch GMBH|Бош'

На что заменить = "Bosch"

Тип замены = регулярное выражение

Порядок = 1

Правило 2:

Столбец = 4

Что заменить = r'MAKITA|Макита|Makita Corp'

На что заменить = "Makita"

Тип замены = регулярное выражение

Порядок = 2

Пример 7. Нормализация десятичных разделителей

В разных файлах используются разные десятичные разделители: точка или запятая.

Правило для замены запятой на точку (только в числах):

Столбец = 6 (столбец с ценой)

Что заменить = r'(\d+),(\d+)'

На что заменить = r'\1.\2'

Тип замены = регулярное выражение

Порядок = 1

Результат: "4500,50" → "4500.50"

Пример 8. Удаление пробелов в числах (разделители тысяч)

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

Правило:

Столбец = 6

Что заменить = r'(\d+)\s+(\d+)'

На что заменить = r'\1\2'

Тип замены = регулярное выражение

Порядок = 2

Результат: "4 500" → "4500"

Пример 9. Замена римских цифр на арабские

Иногда размеры или модели указаны римскими цифрами.

Правило:

Столбец = 7 (столбец с размером)

Что заменить = r'\b(XL|L|M|S|XS)\b'

На что заменить = используем словарь замен (каждое правило для каждой цифры)

Тип замены = регулярное выражение

Пример:
XL → "46-48"
L → "44-46"
M → "42-44"
S → "40-42"
XS → "38-40"

Пример 10. Удаление лишних символов в конце

Удаление точек, запятых и других знаков препинания в конце строк.

Правило:

Столбец = 2

Что заменить = r'[.,;:\s]+$'

На что заменить = ""

Тип замены = регулярное выражение

Порядок = 3

Результат: "Дрель Bosch." → "Дрель Bosch"

Пример 11. Замена кавычек

Приведение разных видов кавычек к единому стандарту.

Правило:

Столбец = 2

Что заменить = r'[""]'

На что заменить = '"'

Тип замены = регулярное выражение

Порядок = 1

Результат: "Дрель «Bosch»" → "Дрель "Bosch""

Пример 12. Удаление артиклей

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

Правило:

Столбец = 2

Что заменить = r'\b(the|a|an|der|die|das|le|la|les)\b\s+'

На что заменить = ""

Тип замены = регулярное выражение

Порядок = 2

Результат: "The Bosch drill" → "Bosch drill"

Пример 13. Нормализация написания "№"

Приведение разных вариантов обозначения номера к единому виду.

Правило:

Столбец = 8 (столбец с артикулом)

Что заменить = r'№|No.|#|номер'

На что заменить = "№"

Тип замены = регулярное выражение

Порядок = 1

Пример 14. Замена спецсимволов на пробелы

Замена табуляции, неразрывных пробелов и других спецсимволов на обычные пробелы.

Правило:

Столбец = 2

Что заменить = r'[\t\n\r\f\v]'

На что заменить = " "

Тип замены = регулярное выражение

Порядок = 1

Пример 15. Удаление повторяющихся слов

Иногда в названиях слова повторяются.

Правило:

Столбец = 2

Что заменить = r'\b(\w+)\s+\1\b'

На что заменить = r'\1'

Тип замены = регулярное выражение

Порядок = 3

Результат: "Дрель дрель Bosch" → "Дрель Bosch"

Примеры сложных регулярных выражений для замены

Пример 16. Извлечение и перестановка частей текста

Нужно поменять местами фамилию и имя: "Иванов Иван" → "Иван Иванов"

Правило:

Что заменить = r'^(\w+)\s+(\w+)$'

На что заменить = r'\2 \1'

Тип замены = регулярное выражение

Пример 17. Форматирование телефонных номеров

Приведение телефонов к единому формату: "8(495)123-45-67" → "+7 (495) 123-45-67"

Правило:

Что заменить = r'^8(\d{3})(\d{3})-(\d{2})-(\d{2})$'

На что заменить = r'+7 (\1) \2-\3-\4'

Тип замены = регулярное выражение

Пример 18. Извлечение чисел из текста с удалением букв

Если нужно оставить только цифры: "Арт. AB-12345" → "12345"

Правило:

Что заменить = r'[^0-9]'

На что заменить = ""

Тип замены = регулярное выражение

Пример 19. Добавление префикса к артикулу

Если артикулы должны начинаться с определенного префикса.

Правило:

Что заменить = r'^(\d+)$'

На что заменить = r'PRF-\1'

Тип замены = регулярное выражение

Результат: "12345" → "PRF-12345"

Пример 20. Удаление всего кроме букв и пробелов

Очистка текста от цифр и спецсимволов.

Правило:

Что заменить = r'[^а-яА-Яa-zA-Z\s]'

На что заменить = ""

Тип замены = регулярное выражение

Результат: "Дрель Bosch GSB-13/RE" → "Дрель Bosch GSB RE"

Порядок применения правил

Правила применяются в порядке возрастания поля "Порядок". Это критически важно для правильной обработки.

Пример правильной последовательности для очистки названия:

Порядок 1: Удалить HTML-теги

Порядок 2: Удалить информацию в скобках

Порядок 3: Заменить множественные пробелы на один

Порядок 4: Удалить пробелы в начале и конце

Порядок 5: Привести к верхнему регистру первую букву

Пример неправильной последовательности (не сработает):

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

Примеры для YML (ЯНДЕКС.МАРКЕТ)

Пример 21. Замена в названии товара YML

XPath выражение указывает на тег, в котором нужно выполнить замену.

Правило:

XPath выражение = name

Что заменить = r'\s*[)]∗[)]∗'

На что заменить = ""

Тип замены = регулярное выражение

Порядок = 1

Пример 22. Замена в атрибутах YML

Замена в атрибуте available.

Правило:

XPath выражение = @available

Что заменить = "true"

На что заменить = "yes"

Тип замены = точная замена

Пример 23. Очистка параметров YML

Замена в тегах param.

Правило:

XPath выражение = param[@name="Вес"]

Что заменить = r'(\d+),(\d+)'

На что заменить = r'\1.\2'

Тип замены = регулярное выражение

Примеры для XML

Пример 24. Замена в тегах XML

Очистка наименования от лишних символов.

Правило:

XPath выражение = Наименование

Что заменить = r'\s+'

На что заменить = " "

Тип замены = регулярное выражение

Пример 25. Замена во вложенных тегах XML

Очистка значений характеристик.

Правило:

XPath выражение = Характеристики/Мощность

Что заменить = r'[^\d]'

На что заменить = ""

Тип замены = регулярное выражение

Примеры для JSON

Пример 26. Замена в простых полях JSON

Очистка названия товара.

Правило:

JSON Path = $.name

Что заменить = r'<[^>]+>'

На что заменить = ""

Тип замены = регулярное выражение

Пример 27. Замена во вложенных объектах JSON

Очистка значений характеристик.

Правило:

JSON Path = $.specifications.weight

Что заменить = r'(\d+),(\d+)'

На что заменить = r'\1.\2'

Тип замены = регулярное выражение

Пример 28. Замена в массивах JSON

Очистка всех элементов массива изображений.

Правило:

JSON Path = $.images[*]

Что заменить = r'^http://'

На что заменить = "https://"

Тип замены = точная замена

Практические примеры

Пример 29. Полная очистка названия товара

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

Последовательность правил для столбца 2 (название):

Правило 1 (порядок 1): Удалить HTML-теги

Что заменить = r'<[^>]+>'

На что заменить = ""

Правило 2 (порядок 2): Удалить информацию в скобках

Что заменить = r'\s*[)]∗[)]∗'

На что заменить = ""

Правило 3 (порядок 3): Удалить лишние пробелы

Что заменить = r'\s{2,}'

На что заменить = " "

Правило 4 (порядок 4): Удалить пробелы в начале и конце

Что заменить = r'^\s+|\s+$'

На что заменить = ""

Правило 5 (порядок 5): Заменить множественные дефисы

Что заменить = r'-+'

На что заменить = "-"

Правило 6 (порядок 6): Сделать первую букву заглавной

Что заменить = r'^(\w)'

На что заменить = r'\U\1\E' (специальный синтаксис)

Пример 30. Нормализация артикулов

Артикулы могут быть в разных форматах, нужно привести к единому.

Правило 1 (порядок 1): Удалить пробелы

Что заменить = r'\s+'

На что заменить = ""

Правило 2 (порядок 2): Удалить все не-буквенно-цифровые символы

Что заменить = r'[^\w]'

На что заменить = ""

Правило 3 (порядок 3): Привести к верхнему регистру

Что заменить = r'([a-z])'

На что заменить = r'\U\1\E'

Пример 31. Очистка цен

Цены могут быть в разных форматах, нужно подготовить для парсинга.

Правило 1 (порядок 1): Удалить пробелы-разделители тысяч

Что заменить = r'(\d+)\s+(\d+)'

На что заменить = r'\1\2'

Правило 2 (порядок 2): Заменить запятую на точку (десятичный разделитель)

Что заменить = r'(\d+),(\d+)'

На что заменить = r'\1.\2'

Правило 3 (порядок 3): Удалить все символы кроме цифр, точки и минуса

Что заменить = r'[^\d.-]'

На что заменить = ""

Правило 4 (порядок 4): Удалить лишние точки (оставить только одну)

Что заменить = r'.(?=.*.)'

На что заменить = ""

Использование групп захвата при замене

В регулярных выражениях можно использовать группы захвата (обозначаются скобками) и ссылаться на них в замене через $1, $2 и т.д.

Пример с двумя группами:

Что заменить = r'(\d+)\s[x*]\s(\d+)'

На что заменить = r'$1 на $2'

Результат: "280x200" → "280 на 200"

Пример с тремя группами:

Что заменить = r'(\d+)-(\d+)-(\d+)'

На что заменить = r'$3.$2.$1'

Результат: "2023-12-25" → "25.12.2023"

Пример с именованными группами:

Что заменить = r'(?P<day>\d{2}).(?P<month>\d{2}).(?P<year>\d{4})'

На что заменить = r'$year-$month-$day'

Результат: "25.12.2023" → "2023-12-25"

Типичные ошибки

Ошибка: "Замена не происходит"

Проверьте что правило активно (флажок "Активно" включен)

Убедитесь что указан правильный номер столбца\xpath\json path

Проверьте порядок применения - возможно другое правило изменяет текст до этого

Для точной замены проверьте регистр (замена чувствительна к регистру)

Ошибка: "Заменяется слишком много"

Сделайте регулярное выражение более точным, используйте границы слов \b

Добавьте больше контекста в паттерн

Используйте якоря ^ и $ для привязки к началу/концу строки

Ошибка: "Не работает регулярное выражение"

Проверьте синтаксис, особенно экранирование спецсимволов

Используйте онлайн-тестеры для отладки

Убедитесь что в выражении нет ошибок

Ошибка: "Порядок правил неправильный"

Продумайте последовательность: сначала грубая очистка, потом тонкая

Удаление лишнего должно идти до нормализации

Присвойте правильные номера порядка

Советы по использованию

Минимизируйте количество правил: Одно сложное регулярное выражение может заменить несколько простых правил.

Тестируйте на реальных данных: Возьмите выборку из файла и проверьте все правила.

Используйте описания: Всегда заполняйте описание правила, чтобы через месяц вспомнить зачем оно нужно.

Группируйте по столбцам\xpath\json path: Правила для одного столбца\xpath\json path лучше делать с последовательными номерами порядка.

Не забывайте про производительность: Слишком много правил или очень сложные регулярные выражения могут замедлить импорт.

Комбинируйте с правилами извлечения: Часто после замены текст становится готов для извлечения значений.