Сортировка данных

Тема в разделе "Обработка данных при парсинге во вкладке "Контент"", создана пользователем Rank X, 8 сен 2015.

  1. Rank X

    Rank X New Member Пользователи

    Регистрация:
    24 апр 2015
    Сообщения:
    28
    Здравствуйте!
    Собираю данные в таком виде (слева счет матча, справа коэффициент букмекера):
    1:0 10.61
    2:0 20.60
    2:1 13.43
    3:0 55.00
    3:1 35.54
    3:2 41.90
    Можно ли организовать сортировку по коэффициенту, чтобы данные вывелись не в том порядке, в каком они представлены на странице с которой собираются, а чтобы сначала вывелся счет с наименьшим коэффициентом, и далее в порядке возрастания коэффициента? Т.е. как представлено ниже:
    1:0 10.61
    2:1 13.43
    2:0 20.60
    3:1 35.54
    3:2 41.90
    3:0 55.00
     
  2. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    Здравствуйте!
    Как по мне, это осуществимо только с помощью написания внешнего php
     
  3. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    Можно стандартными средствами попробовать, зная порядок срабатывания макросов (просмотр логов в предосмотре в помощь), делаем в таком порядке.
    1. FIRST_REPLACE
    2. SORT
    3. REPLACE

    Готовое решение (вместо списка счетов поставьте границу которая их выводит в вашем шаблоне вывода)
    Код:
    [REPLACE(re:([0-9\.]+) ([0-9\:]+)|$2 $1{break} |	)][SORT({br}|{br}{dupignore})][FIRST_REPLACE(	| {break}re:([0-9\:]+) ([0-9\.]+)|$2 $1)]1:0	10.61	
    2:0	20.60	
    2:1	13.43	
    3:0	55.00	
    3:1	35.54	
    3:2	41.90[/FIRST_REPLACE][/SORT][/REPLACE]
     

    Вложения:

    • preview.png
      preview.png
      Размер файла:
      28,2 КБ
      Просмотров:
      11
    Последнее редактирование: 9 сен 2015
  4. Rank X

    Rank X New Member Пользователи

    Регистрация:
    24 апр 2015
    Сообщения:
    28
    Володя, спасибо! Обязательно попробую!
     
  5. Rank X

    Rank X New Member Пользователи

    Регистрация:
    24 апр 2015
    Сообщения:
    28
    Работает замечательно! Спасибо за помощь, очень выручил!
    Думаю эта тема могла бы быть полезна и тем, кто парсит данные типа "товар -цена" и кому надо сделать сортировку "сначала дешевые" )). Если сам сайт с товаром не предоставляет такой возможности.
     
    Последнее редактирование: 9 сен 2015
  6. Rank X

    Rank X New Member Пользователи

    Регистрация:
    24 апр 2015
    Сообщения:
    28
    Может быть кто подскажет как в моем случае:
    1) После сортировки вывести только первые 30 строк , не сохраняя все последующие.
    2) В дополнительных настройках границ парсинга задать функцию поиска-замены для таких значений счёта, где отсутствует коэффициент. Бывает так:
    Код:
    2:1	12.80	
    2:2	16.70	
    2:0	17.40	
    1:3		
    0:3	18.50	
    2:3	31.60	
    3:1		
    3:2		
    3:0		
    
    Задал там вручную для каждого возможного случая в таком виде:
    Код:
    3:1	|
    3:0	|
    2:9	|
    2:8	|
    2:7	|
    2:6	|
    Но, думаю что можно как-то проще, макросом {skip}, только не могу сообразить как.
     
  7. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    Повторяющиеся границы имеют надстройку с какого цикла и/или сколько циклов брать.
     
  8. Rank X

    Rank X New Member Пользователи

    Регистрация:
    24 апр 2015
    Сообщения:
    28
    Да, но у меня все перечисленное в одной обычной границе. Один цикл. Ну и если бы было в повторяющихся, то тоже не подошло бы, потому что надо брать уже после сортировки.
     
  9. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    Где не коэфициента так понимаю не нужны? Можно попробовать удалить их из границы через поиск-замену.
    Код:
    re:([\d]+)\:([\d]+)	([^0-9\:\.\-\r\n]{1,})|
    re:([\d]+)\:([\d]+)\r\n|
     
    Последнее редактирование: 11 сен 2015
  10. Rank X

    Rank X New Member Пользователи

    Регистрация:
    24 апр 2015
    Сообщения:
    28
    Почти сработало, но оставляет вторую цифру, когда счет двухзначный. Например 0:10 остается 0
     
    Последнее редактирование: 11 сен 2015
  11. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    Регулярное выражение первое отыскивает не совпадающие обычному формату счет и коэффициент и удаляет, второе регулярное выражение удаляет когда только счет без коэффициента.
    п.с. проверялось на выше предоставленных счетах, работает корректно. Возмжно будут другие "разновидности" - приведите примеры.
     
    Последнее редактирование: 11 сен 2015

Поделиться этой страницей