• Как корректно разбить строку на подстроки по разделителю на множестве строк (по датасету)?

    erge
    @erge Автор вопроса
    Примус починяю
    Необходимо использовать LATERAL (inline-представление), как посоветовал Максим Y
    Но, до версии 12С это было типа недокументированной "фичей" и чтобы ее включить необходимо выполнить:
    alter session set events '22829 trace name context forever';


    Попробовал в 11g (на dbfiddle.uk) и сработало!

    https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=3aa5...

    PS: попробовал у себя на 9i и.... тоже сработало! ))

    alter session set events '22829 trace name context forever';
    
    WITH 
      test AS (
    SELECT 'проул.' as code, 'проул.|пр-к|' as str FROM dual UNION
    SELECT 'ул.' as code, 'ул.|улица|ул-ца|' as str FROM dual UNION
    SELECT 'пер.' as code, 'пер.|переулок|' as str FROM dual UNION
    SELECT 'кв-л' as code, 'кв-л|квартал|' as str FROM dual UNION
    SELECT 'линия' as code, 'линия|' as str FROM dual UNION
    SELECT 'парк' as code, 'парк|' as str FROM dual UNION
    SELECT 'рзд' as code, 'рзд|разъезд|' as str FROM dual UNION
    SELECT 'сад' as code, 'Сад|' as str FROM dual UNION
    SELECT 'тракт' as code, 'тракт|' as str FROM dual UNION
    SELECT 'тер' as code, 'тер|территория|' as str FROM dual UNION
    SELECT 'ст' as code, 'ст|станция|' as str FROM dual UNION
    SELECT 'сл' as code, 'сл|слобода|' as str FROM dual UNION
    SELECT 'пр-кт' as code, 'пр.|проспект|пр-кт|' as str FROM dual UNION
    SELECT 'шоссе' as code, 'ш.|шоссе|' as str FROM dual UNION
    SELECT 'пл' as code, 'пл|площадь|пл-дь|' as str FROM dual UNION
    SELECT 'наб.' as code, 'наб.|набережная|наб-ая|' as str FROM dual UNION
    SELECT 'тупик' as code, 'тупик|' as str FROM dual UNION
    SELECT 'мост' as code, 'мост|' as str FROM dual UNION
    SELECT 'пр.' as code, 'проезд|пр.|' as str FROM dual UNION
    SELECT 'блв.' as code, 'блв.|бульвар|' as str FROM dual UNION
    SELECT 'мкн.' as code, 'мкн.|микрорайон|' as str FROM dual UNION
    SELECT 'пос.' as code, 'пос.|посёлок|' as str FROM dual UNION
    SELECT 'овраг' as code, 'овраг|' as str FROM dual UNION
    SELECT 'городок' as code, 'городок|' as str FROM dual
    )
    SELECT t1.code, SUBSTR(t1.str, 
                  DECODE(t2.lvl, 1, 1, INSTR(t1.str, '|', 1, t2.lvl - 1) + 1),
                  INSTR(t1.str, '|', 1, t2.lvl) 
                  - DECODE(t2.lvl, 1, 1, INSTR(t1.str, '|', 1, t2.lvl - 1) + 1))
    FROM test t1,
      LATERAL (SELECT level AS lvl FROM dual
             CONNECT BY NVL(INSTR(t1.str, '|', 1, level), 0) > 0) t2
    ;


    так же есть еще вариант, через преобразование в XML:
    WITH
    str_csv AS (
      SELECT 'проул.' as code, 'проул.|пр-к|' as str FROM dual UNION
      SELECT 'ул.' as code, 'ул.|улица|ул-ца|' as str FROM dual UNION
      SELECT 'пер.' as code, 'пер.|переулок|' as str FROM dual UNION
      SELECT 'кв-л' as code, 'кв-л|квартал|' as str FROM dual UNION
      SELECT 'линия' as code, 'линия|' as str FROM dual UNION
      SELECT 'парк' as code, 'парк|' as str FROM dual UNION
      SELECT 'рзд' as code, 'рзд|разъезд|' as str FROM dual UNION
      SELECT 'сад' as code, 'Сад|' as str FROM dual UNION
      SELECT 'тракт' as code, 'тракт|' as str FROM dual UNION
      SELECT 'тер' as code, 'тер|территория|' as str FROM dual UNION
      SELECT 'ст' as code, 'ст|станция|' as str FROM dual UNION
      SELECT 'сл' as code, 'сл|слобода|' as str FROM dual UNION
      SELECT 'пр-кт' as code, 'пр.|проспект|пр-кт|' as str FROM dual UNION
      SELECT 'шоссе' as code, 'ш.|шоссе|' as str FROM dual UNION
      SELECT 'пл' as code, 'пл|площадь|пл-дь|' as str FROM dual UNION
      SELECT 'наб.' as code, 'наб.|набережная|наб-ая|' as str FROM dual UNION
      SELECT 'тупик' as code, 'тупик|' as str FROM dual UNION
      SELECT 'мост' as code, 'мост|' as str FROM dual UNION
      SELECT 'пр.' as code, 'проезд|пр.|' as str FROM dual UNION
      SELECT 'блв.' as code, 'блв.|бульвар|' as str FROM dual UNION
      SELECT 'мкн.' as code, 'мкн.|микрорайон|' as str FROM dual UNION
      SELECT 'пос.' as code, 'пос.|посёлок|' as str FROM dual UNION
      SELECT 'овраг' as code, 'овраг|' as str FROM dual UNION
      SELECT 'городок' as code, 'городок|' as str FROM dual
    ),
    str_xml AS (
      SELECT code, XMLType('<a><b>'||replace(str, '|','</b><b>')||'</b></a>') xml FROM str_csv
    )
    SELECT
        code, extractValue(value(t),'b') str_type
      FROM
        str_xml s,
        TABLE(XMLSequence(s.xml.extract('a/b'))) t
      WHERE extractValue(value(t),'b') is not null
    ;
    Ответ написан
    Комментировать
  • Как корректно разбить строку на подстроки по разделителю на множестве строк (по датасету)?

    @x_shader
    Oracle & Coffee
    Привет.
    Нужно вовремя остановить connect by.

    SELECT
           t1.code
          ,regexp_substr(t1.str, '[^\|]+', 1, lvl) AS str_splitted
      FROM test t1
     CROSS JOIN LATERAL (
           SELECT level AS lvl
             FROM dual
          CONNECT BY level <= regexp_count(t1.str, '\|') 
     ) t2
    Ответ написан
    7 комментариев
  • Как изучать информатику самостоятельно, чтобы добиться профильного уровня?

    hint000
    @hint000
    у админа три руки
    там будет вести крутой учитель информатики, который отлично и интересно объясняет
    Запоминай алгоритм.
    1. Убедись, что правильно знаешь имя-отчество этого учителя.
    2. Выясняешь, где найти этого учителя. В каких кабинетах он ведёт занятия и т.п. Может быть в учительской подловить.
    3. Смотришь расписание, чтобы найти удобное время, когда можно подойти к этому учителю. На перемене или после уроков.
    4. Говоришь: "Василий Иваныч, я из такого-то класса, вы у нас потом будете вести информатику, я бы хотела проконсультироваться насчёт самостоятельной подготовки..." Только не вздумай явно критиковать преподавание Paint его коллегой, это будет выглядеть не этично. Можно сказать: "Я думаю, что мне будет недостаточно того, что нам сейчас дают на уроках, поэтому занимаюсь самостоятельно". Это будет и правдой и без негатива. Ну и просишь порекомендовать книги или список тем для изучения. Если учитель станет уточнять, что ты уже изучала, чем конкретно интересуешься - это хороший знак (ему не пофиг), ты, наверняка, получишь неплохие рекомендации. Либо если ему в этот момент некогда, но он предложит конкретное время, когда можно обсудить подробно.

    Суть в том, что никто лучше учителя не даст тебе советы по темам, которые он будет преподавать.
    Ответ написан
    Комментировать
  • Как сделать автообновляемую таблицу?

    Adamos
    @Adamos
    На любой из тех, что в тегах к вопросу.
    Ответ написан
    2 комментария
  • Как написать бот для создания ботов?

    Griboks
    @Griboks
    Вообще не проблема, только вы сайтом ошиблись. Вам нужно на фриланс.
    Ответ написан
    Комментировать
  • Как разделить файл на строки, считать определенную строку, а затем разделить ее по разделителю?

    RimMirK
    @RimMirK
    Вроде человек. Вроде учусь. Вроде пайтону
    with open('data/accounts.txt', 'r') as file:
    -   lines = file.readlines()
    +   line = file.readlines()[1]
    -   for x in lines:
    -       login, password = x.split(':')[0], x.split(':')[1]
    +   login, password = x.split(':')
        bot.send_message(message.chat.id, login + password)

    with open('data/accounts.txt', 'r') as file:
        line = file.readlines()[1]
        login, password = x.split(':')
        bot.send_message(message.chat.id, login + password)
    Ответ написан
    Комментировать
  • Как перемешать между собой слова создав новые?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Почти во всех языках разработки есть функция shuffle которая случайным образом тасует массив как колоду карт.
    Вот как тут пишут https://www.geeksforgeeks.org/shuffle-an-array-in-... с помощью numpy.

    Есть еще генераторы перестановок (permutations) там можно получить не случайные а последовательные и неповторяющиеся перестановки. Например для массива из 10 слов можно получить больше 3 млн новых массивов.
    Ответ написан
  • Как в моем случае правильно сделать проверку на ввод числа пользователем?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Варианта 2:
    1.Перед преобразованием проверять сообщение с помощью isdigit().
    2.Ловить соответствующий Exeption и обрабатывать.
    Ответ написан
    1 комментарий
  • Как исправить само-очистку файла wp-load.php?

    @elmurzaalchakov Автор вопроса
    Неизвестный мне вирус который очищает wp-load.php оказался не так страшен, но натворил много бед, а именно все сайты на сервере были заражены.
    Удалено модератором.
    Запрещено распространять вирусы.

    Основные признаки вируса:
    Пустой файл wp-load.php

    wp-admin/css/css.php - если увидели, значит вирус уже интегрирован полностью и вот вот начнется само очистка.

    В папке wp-content а так же в подпапках (всех) - найдете файлы
    function-class.php
    .class-wp-cache.php
    некоторые файлы index.php (там где им не место быть, особенно в папках uploads)
    В них будет содержаться код который по ссылке.
    Простое удаление этих файлов не поможет, так как они создаются заново, надо зайти в wp-load и удалить все что связано с 'WPTemplateOptions' а так же ищите это словосочетание в папке с темой, обычно в файле function нет вирусного кода, там указан лишь путь, поэтому вам необходимо сверить с оригиналом, в моем случает в файл function в конце был добавлен просто путь к файлу с вирусом, назывался он class.php , обнаружил я его при сверке.

    И так что необходимо сделать, удалить папки wo-admin, wp-include именно удалить, так как в подпапках лежит вирус и называется он обычно как название папки в котором лежит, поэтому самое быстрое это удалить, перезапись не поможет. И залить по новой с оригинального архива.
    Так же желательно заменить файлы WP в корневой папке.

    Далее ищем в папке wp-content эти два файла: function-class.php | .class-wp-cache.php и папке с плагинами и uploads дополнительно файл index.php. Удаляем, я удалял с помощью Filezila потому что хостер с убогим файловым менеджером без поиска.

    И на последок ищем в этой же папке файлы которые начинаются на .(название папки), то-есть вирус создает файл который имеет название папки но только с . в начале, например theme/astra/.astrap.php

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

    Важно что никакие плагины не выявляют этот вирус, ни даже virusdie через ftp и прочее, встроенные от хоста так же не выявляют.

    Важно помнить, если у вас полетела wp-load.php и накрылся сайт значит сервак полностью заражен и дальше будет накрываться другие.
    Ответ написан
    8 комментариев
  • Почему пайчарм даёт ошибку, но когда делаю то, что он просит опять ошибка?

    @ragq1991
    Лень копировать код, подтягивать библиотеки, поэтому самый простой вариант. В троке "if call.date == 'piza':", где я так понял вылетает ошибка в первый раз, поставь точку-останова(запустить код нужно в режиме отладки, для этого в верхнем правом углу нажми не треугольник запуска а жука) и посмотри что у тебя лежит в переменной "call", есть там "data" или "date" или ещё что-то.
    Ответ написан
    Комментировать
  • Хочу использовать компьютер одновременно как NAS так и Свитч вопрос в том возможно ли это?

    hint000
    @hint000
    у админа три руки
    Прежде всего, неадекватный выбор операционной системы для NAS.
    spoiler
    Windows - для игр. Linux - для работы с сетью. *BSD - маньякам для работы с сетью.
    Потом неадекватно использовать такое железо в роли свитча. Наверняка, в качестве роутера сейчас используется какая-нибудь "мыльница". В то время как можно на этом железе построить шикарнейший роутер + NAS на Linux.
    spoiler
    Когда вам нужно охранять дом, то вы заводите большую собаку. Хотя у вас уже были 5 кошек ("что-то мы зря их кормим, пусть пользу приносят" (c)) и можно было найти специального тренера, который бы научил кошек злобно лаять и кидаться на незнакомых людей. :)
    А свитч стоит копейки, и выполняет свои функции лучше, чем программный велосипед, потому что там используется специальный чип, идеально заточенный только под функции свитча.
    spoiler
    То, что вы пытаетесь сделать - теоретически это сделать можно, но это бессмысленная хрень. Так что учитывайте:
    1) люди не любят делать бессмысленную хрень (хм... ну-у... да... на самом деле любят, но речь не об этом), вам будет трудно найти человека, который делал ту же самую бессмысленную хрень и смог бы дать не просто теоретические рекомендации, а дать конкретные инструкции на основе личного опыта делания именно этой бессмысленной хрени.
    2) люди не любят тратить время на то, чтобы помочь кому-то делать бессмысленную хрень; лучше потратить время, чтобы помочь кому-то в чём-то полезном, ну или хотя бы потратить время, чтобы отговорить кого-то от делания бессмысленной хрени.
    Ответ написан
    8 комментариев
  • Как скачать документ, книгу с защищенного сайта(только чтение) (Для примера взял книгу с открытым доступом)?

    @Quiensabe
    VR-разработчик
    Есть такой софт Offline Explorer. Он умеет качать ссылки по шаблону, умеет авторизоваться и открывать все страницы как пользователь, умеет проходить по ссылкам и качать доп. материалы. В общем думаю на 95% вашу проблему можно там легко решить.
    Ответ написан
    Комментировать
  • Как загрузить картинку в базу данных сайта с python?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Вы не предоставили достаточной информации для ответа.
    Не понятно какой библиотекой для работы с БД вы пользуетесь. Но в любой есть механизм работы с бинарными данными.
    И нет, в текстовый формат бинарные данные не требуется переводить. Это избыточно, медленно и неэкономично.
    Приведите код, которым вы вставляете какие-то другие данные в вашу таблицу, тогда будет понятнее в каком ключе вам подсказывать решение.
    загрузить изображение в базу данных сайта

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

    В общем мало подробностей для корректного обстоятельного ответа.
    Ответ написан
    Комментировать
  • Как решить проблему с selenium python?

    EreminD
    @EreminD
    Кое-что умею
    как я перестал париться из-за бинарников и полюбил WDM

    from selenium import webdriver
    from selenium.webdriver.firefox.service import Service as FirefoxService
    from webdriver_manager.firefox import GeckoDriverManager
    
    driver = webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install()))
    Ответ написан
    1 комментарий
  • Какие книги для изучения Python вы порекомендуете?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Марк Лутц - изучаем Python. 5-е издание. (в двух томах).
    Однако я бы советовал в пару к нему взять что-то по алгоритмам (навскидку вспомню "Грокаем алгоритмы", в комментариях могут посоветовать лучше/еще), полагаю на ЕГЭ это будет полезно.
    Ответ написан
    3 комментария
  • Вылет Python при возврате c_char_p из dll ctypes. Что не так?

    Vindicar
    @Vindicar
    RTFM!
    У тебя возвращаемая переменная размещена на стеке. Возможно, string умирает по выходу из функции, и уносит с собой выделенную строку, так что указатель к моменту возврата из функции уже ни на что не указывает.

    Если обратиться к функции из под C++, она сработает?
    # include <fstream>
    # include <string>
    using namespace std;
    
    const char* readfile(char* filename) {
      ifstream file;
      string lines, line;
      
      file.open(filename);
      if (file.is_open()) {
        while (file >> line) {
          lines += line;
        }
        file.close();
        return lines.c_str();
      } else {
        char* trashVar = "Bad open";
        return trashVar;
      }
    }
    
    int main()
    {
        cout << readfile("filename.txt");
        return 0;
    }
    Ответ написан
    4 комментария
  • Почему не отрисовывается компонент в Blazor?

    vabka
    @vabka
    Токсичный шарпист
    Ну мы вам наслово верим, что код нормальный.
    Раз так, то значит остаётся единственный вариант:
    заряженная частица от солнца угодила в оперативку и перевернула какой-то бит, который отвечает за то, нужно ли этот компонент отрисовывать.

    Говорят "звёзды не так сошлись" - это как раз про такой случай.
    Попробуйте перезагрузить компьютер и попробовать ещё.

    Если после перезагрузки всё ещё не работает - значит вы либо катастрофически удачливый, либо всё-таки есть какая-то ошибка в коде и вы нам врёте по поводу "Разметка, код всё нормально"
    Ответ написан
    Комментировать
  • Почему не отрисовывается компонент в Blazor?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Потому что вы сделали вот там *тыкает пальцем в экран* не правильно, нужно было сделать вот так: *кусок кода*. Вот и всё, проблема решена
    Ответ написан
    Комментировать
  • PyCarm не видит интерпритатор Ubuntu, как исправить?

    GavriKos
    @GavriKos
    Так в WSL будут бинарники для линукс-подобных систем. А пайчарм запущен в винде и не умеет с ними работать.
    Ответ написан
    2 комментария
  • Как отправлять рандомные сообщения через telethon?

    drygdryg
    @drygdryg
    Python-разработчик
    Вынесите вызовы random.choice из модуля text в отдельную функцию, и перед отправкой каждый раз вызывайте эту функцию. Например:
    def generate_random_sentence():
        """Создаёт случайное предложение"""
        ky = ['text', 'text2']
        k = random.choice(ky)
    
        zax = ['text', 'text2', 'text3']
        z = random.choice(zax)
    
        magz = ['text', 'text2', 'text3', 'text4']
        m = random.choice(magz)
    
        return f"{k}. {z} в {m}"
    Ответ написан
    Комментировать