Переносы строк. Сжатие пробелов



  • Здравствуйте. При выполнении действия "Xpath получить текст", текст пишется в одну строку и не сжимаются пробелы по краям. Подскажите как привести текст в нормальный вид со всеми переносами строк и сжатием пробелов. Теги переносов в html могут быть разные как br, так и p

    0_1543852196230_тест.xml



  • @john_bradley лучше конечно сайт скинуть)
    Что бы убрать пробелы можно использовать .trim()
    Или метод описанный ruzne - https://community.bablosoft.com/post/30199

    Так же, можно получать все эти данные отдельно друг от друга и потом уже "склеивать".



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



  • Вот еще скриншот на всякий случай https://yadi.sk/i/O6K-KjSrzFj-GQ


  • Banned

    @john_bradley

    @john_bradley said in Переносы строк. Сжатие пробелов:

    переносами строк

    https://community.bablosoft.com/topic/3115/как-разделить-такую-строку/9

    список/разделить выбираете разделитель сами.

    @john_bradley said in Переносы строк. Сжатие пробелов:

    и сжатием пробелов

    @uraabk said in Переносы строк. Сжатие пробелов:

    Что бы убрать пробелы можно использовать .trim()



  • Т.е. надо распарсить все на строки через например разделитель <br/> потом удалять оставшиеся теги регуляркой и применять .trim()? А если будут разделители строк </p> как указать 2 разделителя для парснга строки?
    Я немного другим способом попробовал это сделать, https://yadi.sk/i/9oRGOIKRuKpkrQ но не могу понять почему удаляется тег <a> вместе с текстом.
    0_1543862548226_тест.xml



  • @john_bradley said in Переносы строк. Сжатие пробелов:

    Здравствуйте. При выполнении действия "Xpath получить текст", текст пишется в одну строку и не сжимаются пробелы по краям. Подскажите как привести текст в нормальный вид со всеми переносами строк и сжатием пробелов. Теги переносов в html могут быть разные как br, так и p

    0_1543852196230_тест.xml

    Можно использовать регулярное выражение для "сжатия" пробелов:
    0_1543868285805_af003515-49bf-47dc-877d-4a3a8e69a011-изображение.png

    Вот скрипт


  • Banned

    @john_bradley
    Если они рядом то хоть всю строку, но действие в списке, а не в инструментах. Но если они не рядом никак это разные списки будут.
    У меня нет времени разбирать что вы там удаляли для конспирации, проект не открывается
    alt text
    Тег а это ссылка
    тег а



  • Ничего не удалял, вот проект, не знаю почему не залился нормально https://yadi.sk/d/_2253V21Vp_Ikg
    Я знаю что a href это ссылка, а то что находится между >< это текст https://yadi.sk/i/VvP4FkZ5DquhAQ
    Ну раз нет времени и на этом спасибо.


  • Banned

    @john_bradley Я не со зла посмотрел ведь) Правда хз что он но не запустился трижды перекачивал. Так ну теперь вижу. Ну он получает одну ссылку. А что именно вам надо? если вы про разделитель то тот который имел в виду я вот он можете писать там что хотите он по нему и будет делить на список. в отличии от инструментов вы не ограничены ":", ";", "," хоть пробелы разница лишь в том что и выдаст он список, а не переменные со значениями
    ой вот он
    alt text



  • @allive Я понял, что можно делить по любому разделителю, но только по одному, а если в одном тексте у меня будет стоять разделитель строки <br/> а в другом </p>, или в одном тексте сразу встретятся 2 разных разделителя, то такой метод как я понимаю не подойдет, по этому может есть какой-то более универсальный метод как отображать текст не в строку, а в нормальном виде со всеми переносами строк. Вот я что-то подобное пытаюсь сделать, но что-то не могу понять почему так https://yadi.sk/i/iXM-sua9LrhC0g получается? Наверное руки не от туда)


  • Banned

    @john_bradley Универсального нет. Или дерибанить как предложил @Fox или xpath или самому привести все к нему. Заменять, а потом делить. Ведь способ @ruzne это замена, это не удаление. Можете в конструкторе например установить где и что заменять, там есть такой функционал, не обязательно кодить. Причем замять можете не раз и не два и не один элемент, а что захотите. Но это да универсально нет.
    Блин таки заставили меня расковырял я это не текст для баса. Вот так сделайте и вот
    alt text
    //*[@class="description"] Получайте не xml_list, а xpath_text_list


  • Banned

    @allive Вы указываете получать xml и он его ищет, но тут же дополняете только текст, а это не текст вот и вся причина.
    Теперь по замене, вот он аналог в конструкторе, собсна не аналог это оно и есть
    alt text



  • Спасибо, что разъяснили. Жаль конечно что приходится мудрить и добавлять кучу действий казалось бы для такой элементарной задачи.


  • Banned

    @john_bradley Для баса получать xml и получать text это разные действия. Он может получить текст из xml но только тот что имеет прямое отношение к тексту.



  • @john_bradley said in Переносы строк. Сжатие пробелов:

    Спасибо, что разъяснили. Жаль конечно что приходится мудрить и добавлять кучу действий казалось бы для такой элементарной задачи.

    html страница генерируется php скриптом (в основном), а его в свою очередь писал кодер, и для достижения своей цели, он тоже мог прибегнуть к разного рода костылям. Добавлять пробелы к тексту, чтобы выравнять его по элементу например. А когда получаешь этот текст из кода, то его придётся обрабатывать как необходимо.

    @john_bradley said in Переносы строк. Сжатие пробелов:

    если в одном тексте у меня будет стоять разделитель строки <br/> а в другом </p>

    Если получать текст через xpath то оба этих тега выполнят только одну функцию - перенесут строку.



  • @fox said in Переносы строк. Сжатие пробелов:

    Если получать текст через xpath то оба этих тега выполнят только одну функцию - перенесут строку.

    Не совсем, бас будет все писать в одну строку, по крайней мере в моем примере это так https://yadi.sk/i/O6K-KjSrzFj-GQ Действие "Xpath получить текст" просто убирает теги в html, но не переносит текст если присутствуют теги переноса строки.

    @allive said in Переносы строк. Сжатие пробелов:

    Для баса получать xml и получать text это разные действия. Он может получить текст из xml но только тот что имеет прямое отношение к тексту.

    В данном случае текст ссылки имеет отношение к тексту, например если указать действие xpath получить текст, он находит текст ссылки (в данном случае это "vk.cc/654646") https://yadi.sk/i/O6K-KjSrzFj-GQ потому-что это текст, а если применить получить xml и добавить к нему /text() то программа почему то считает, что это уже не текст, парадокс https://yadi.sk/i/iXM-sua9LrhC0g Вот я о чем.


  • Banned

    @john_bradley said in Переносы строк. Сжатие пробелов:

    он находит текст ссылки

    Потому что так написано на странице, какая программа? При чем тут бас? Это правила xpath ну получите текст вашим в арубузе. Бас следует правилам xpath которые у него есть. Это сделано для вас упрощение, а вы зачем то требуя в условиях одно хотите получать другое. https://github.com/bablosoft/BAS/tree/master/Modules/Xpath/js

    То что вы в арбузе добавляете как text() здесь реализовано просто разными действиями. Но иногда пейсатели сайтостроители тоже пишут одно а получаются другое. И потому бас умеет как и арбуз прощать ошибки кодерства. Но вот догадываться за вас он не обязан. Браузер тоже)



  • @allive Я говорю о bas, не грешу конечно на программу, просто интересно почему так получается. Получить каждый xml и добавит text() это практически то же самое что и получить текст xml, только на выходе получается массив текстовых строк, если вы говорите о правилах xpath. Тут я ошибок кодерства не заметил, есть xml:

    <div id="3881504" class="description"> Вот первая строка. <br/><noindex><a href="https://vk.cc/654646/" class="link " target="_blank" rel="nofollow" title="https://vk.cc/654646">vk.cc/654646</a></noindex> вот сайт (вторая строка). <br/>Вот третья строка. <br/>Вот четвертая строка. <br/> </div>

    в нем текст "vk.cc/654646", если получить каждую текстовую строку через "xpath получить кажый xml" таким xpath "//*[@class="description"]/text()" эта часть текста "vk.cc/654646" не отображается, если получать текст через "xpath получить текст" отображается, этот момент мне не ясен.
    ХЗ почему так https://yadi.sk/i/Gk4FVosLhaqhFQ


  • Banned

    @john_bradley Я вам все ответил. ответ вашей задаче теперь внимательно смотрите на теги.
    Вам даже арбуз подсказывает
    alt text


Log in to reply