Например, нужно спарсить характеристики товаров из текстов типа:
1 | БАНКИ ДЛЯ СЫПУЧИХ ПРОДУКТОВ, НАБОР 3ШТ. + ЛОЖКИ 'ИРИС' ДИАМЕТР -9СМ. ВЫСОТА -14СМ. ОБЪЕМ -500СМ. (32,5*11*15,5СМ. ДЛИНА ЛОЖКИ- 12,5 СМ.) (ПОДАРОЧНАЯ |
Видим, что характеристики расположены в тексте хаотично и не структурированно!
Решением является макрос [EXTRACTATTR], который помимо параметров имеет еще и собственные опции:
С помощью макроса [EXTRACTATTR] можно решать следующие задачи:
1) Парсинг одного значения характеристики из неструктурированного текста по ее названию (или очистка текста от этой характеристики)
2) Парсинг всех перечисленных характеристик из неструктурированного текста по списку их названий (или очистка текста от этих характеристик)
Парсинг одного значения характеристики из неструктурированного текста по ее названию (или очистка текста от этой характеристики)
В параметре [NAME] задается имя одной нужной характеристики
В параметре [END] через символ | перечисляются возможные варианты конца области текста со значением характеристики ({br} служит для обозначения переноса строки)
1 | [EXTRACTATTR][NAME]Диаметр[/NAME][END].|{br}[/END]БАНКИ ДЛЯ СЫПУЧИХ ПРОДУКТОВ, НАБОР 3ШТ. + ЛОЖКИ 'ИРИС' ДИАМЕТР -9СМ. ВЫСОТА -14СМ. ОБЪЕМ -500СМ. (32,5*11*15,5СМ. ДЛИНА ЛОЖКИ- 12,5 СМ.) (ПОДАРОЧНАЯ[/EXTRACTATTR] |
В результате получим значение характеристики “Диаметр”:
1 | 9СМ |
Если нужно убрать из текста указанную характеристику, добавляем параметр [CLEAR]:
1 | [EXTRACTATTR][NAME]Диаметр[/NAME][END].|{br}[/END][CLEAR]БАНКИ ДЛЯ СЫПУЧИХ ПРОДУКТОВ, НАБОР 3ШТ. + ЛОЖКИ 'ИРИС' ДИАМЕТР -9СМ. ВЫСОТА -14СМ. ОБЪЕМ -500СМ. (32,5*11*15,5СМ. ДЛИНА ЛОЖКИ- 12,5 СМ.) (ПОДАРОЧНАЯ[/EXTRACTATTR] |
В результате получим текст без характеристики “Диаметр”:
1 | БАНКИ ДЛЯ СЫПУЧИХ ПРОДУКТОВ, НАБОР 3ШТ. + ЛОЖКИ 'ИРИС' ВЫСОТА -14СМ. ОБЪЕМ -500СМ. (32,5*11*15,5СМ. ДЛИНА ЛОЖКИ- 12,5 СМ.) (ПОДАРОЧНАЯ |
Парсинг всех перечисленных характеристик из неструктурированного текста по списку их названий (или очистка текста от этих характеристик)
Перечисляем все возможные характеристики в опциях макроса:
Также убираем из макроса параметр [NAME]!
1 | [EXTRACTATTR][END].|{br}[/END]БАНКИ ДЛЯ СЫПУЧИХ ПРОДУКТОВ, НАБОР 3ШТ. + ЛОЖКИ 'ИРИС' ДИАМЕТР -9СМ. ВЫСОТА -14СМ. ОБЪЕМ -500СМ. (32,5*11*15,5СМ. ДЛИНА ЛОЖКИ- 12,5 СМ.) (ПОДАРОЧНАЯ[/EXTRACTATTR] |
В итоге получаем нужные характеристики в следующем виде (CSV):
Если нужно удалить характеристики из текста, добавляем параметр [CLEAR]:
1 | [EXTRACTATTR][END].|{br}[/END][CLEAR]БАНКИ ДЛЯ СЫПУЧИХ ПРОДУКТОВ, НАБОР 3ШТ. + ЛОЖКИ 'ИРИС' ДИАМЕТР -9СМ. ВЫСОТА -14СМ. ОБЪЕМ -500СМ. (32,5*11*15,5СМ. ДЛИНА ЛОЖКИ- 12,5 СМ.) (ПОДАРОЧНАЯ[/EXTRACTATTR] |
В итоге получаем:
1 | БАНКИ ДЛЯ СЫПУЧИХ ПРОДУКТОВ, НАБОР 3ШТ. + ЛОЖКИ 'ИРИС' (32,5*11*15,5СМ. ) (ПОДАРОЧНАЯ |
Дополнительно
Опции макроса также можно вызывать через соответствующее меню:
Также, в качестве окончания областей значений характеристик в тексте, в параметре [END] можно использовать оператор [MARK]! Это нужно, например, когда нужно спарсить в CSV характеристики из таких текстов:
1 | Высота 20 длина 55 скорость 333 |
В окне настроек макроса перечисляем ВСЕ возможные характеристики:
В параметре [END] прописываем оператор [MARK]:
1 | [EXTRACTATTR][END][MARK][/END]Высота 20 длина 55 скорость 333[/EXTRACTATTR] |
В результате получаем такую таблицу CSV:
Спасибо за внимание!