Задать вопрос
  • Как найти частичное совпадение строк?

    ri_gilfanov
    @ri_gilfanov
    Web- and desktop-developer
    Без дополнительных библиотек и с использованием расстояния Дамерау-Левенштейна можно примерно так:
    import re
    
    
    def get_substrings(string):
        """Функция разбивки на слова"""
        return re.split('\W+', string)
    
    
    def get_distance(s1, s2):
        """Расстояние Дамерау-Левенштейна"""
        d, len_s1, len_s2 = {}, len(s1), len(s2)
        for i in range(-1, len_s1 + 1):
            d[(i, -1)] = i + 1
        for j in range(-1, len_s2 + 1):
            d[(-1, j)] = j + 1
        for i in range(len_s1):
            for j in range(len_s2):
                if s1[i] == s2[j]:
                    cost = 0
                else:
                    cost = 1
                d[(i, j)] = min(
                    d[(i - 1, j)] + 1,
                    d[(i, j - 1)] + 1,
                    d[(i - 1, j - 1)] + cost)
                if i and j and s1[i] == s2[j - 1] and s1[i - 1] == s2[j]:
                    d[(i, j)] = min(d[(i, j)], d[i - 2, j - 2] + cost)
        return(d[len_s1 - 1, len_s2 - 1])
    
    
    def check_substring(search_request, original_text, max_distance):
        """Проверка нечёткого вхождения одного набора слов в другой"""
        substring_list_1 = get_substrings(search_request)
        substring_list_2 = get_substrings(original_text)
    
        not_found_count = len(substring_list_1)
    
        for substring_1 in substring_list_1:
            for substring_2 in substring_list_2:
                if get_distance(substring_1, substring_2) <= max_distance:
                    not_found_count -= 1
    
        if not not_found_count:
            return True
    
    
    search_request = 'трубок использовали для прожигания'
    original_text = 'трубок использовали для прожигания стальковша.Замена воронки 18м 8сл. Разлита полностью'
    
    result = check_substring(search_request, original_text, max_distance=2)
    
    print(result)  # True если найдено, иначе None


    Можете доработать под свои задачи. Но учтите, нахождение расстояния Дамерау-Левенштейна в принципе ресурсоёмкая операция, тем более с реализацией на чистом Python. Например, искать вхождение подстроки в нескольких мегабайтах текста -- может быть довольно долго.

    Чтобы ускорить нахождение расстояния ДЛ, можно использовать реализацию для Python на языке Си: https://github.com/gfairchild/pyxDamerauLevenshtein

    Так же существуют менее точные, но более быстрые алгоритмы сравнения двух строк:
    https://habr.com/ru/post/114997/
    В PyPI и на GitHub должны быть библиотеки с готовыми реализациями наиболее востребованных из них.
    Ответ написан
    7 комментариев
  • Почему выдаёт Runtime ошибку?

    half-life
    @half-life
    Как то так
    import math
    import os
    
    INPUT_FILE = 'input.txt'
    OUTPUT_FILE = 'output.txt'
    NUMBER_THRESHOLD = 1000
    
    if __name__ == '__main__':
        if not os.path.exists(INPUT_FILE) or not os.path.isfile(INPUT_FILE):
            raise FileNotFoundError
        with open('input.txt') as file:
            text = file.read()
        if not text:
            raise ValueError('File is empty')
        try:
            a, b, c, *_ = [int(n) for n in text.strip().split(" ") if n.isdigit() and int(n) < NUMBER_THRESHOLD]
        except ValueError:
            raise ValueError('Wrong input data')
    
        out = ""
        if not (a < b + c and b < a + c and c < a + b):
            out = "-1"
        else:
            p = 0.5 * (a + b + c)
            h = 2 * math.sqrt(p * (p - a) * (p - b) * (p - c)) / a
            out = f'{str(a + b + c)} {("%.5f" % (a * h / 2))}'
    
        with open(OUTPUT_FILE, 'w') as file:
            file.write(out)

    Ответ написан
    2 комментария
  • Можно совмещать написать GUI на PyQt4 и оттуда вызывать функции написанные на C/C++?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    У Python и C высокий уровень интероперабельности. Из кода на Python можно использовать Сишный код, а из кода на C можно выполнять скрипты Python. Для начала почитать можно здесь и здесь.
    Ответ написан
    Комментировать
  • Как совмещать библиотеку pytelegrambot api и другие библиотеки?

    @id2669099
    я думаю, Вам не хватает понимания и знаний работы с языком, не зацикливайтесь на телеграме, попробуйте что-то новое, практика ответит на все Ваши вопросы как кому что кормить, да и есть документации к библиотекам, а тут Вам скорее всего на такой вопрос не ответят, т.к. никакой конкретики в вопросе нет, да и за Вас никто код не напишет скорее всего, приведите пример того что Вы пытаетесь сделать и на каком этапе происходит недопонимание, думаю, в этом случае всё будет намного приветливее со стороны тех, кто отвечает здесь на вопросы

    P.S.: и да, не забывайте форматировать код, который вставляете сюда, а если сомневаетесь как это будет выглядеть - есть предпросмотр :)
    Ответ написан
    Комментировать
  • Как лучше всего управлять консольным приложением?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Смотря, что этот скрипт делает. Если он не отключается от консоли и работает только под активным пользователем, можно прямо в консоль команды вводить. Если это сетевой демон, можно отправлять команды через админский порт или unix-сокет, если скрипт работат под nix'ами. Если это web-сервис, то разумно добавить к нему админский web-интерфейс или админские rest-эндпоинты. Если он работает с брокерами очередей, то можно отправлять команды через специальную очередь. И т.д. и т.п.
    Ответ написан
    2 комментария
  • Как организовать работу?

    @deliro
    1. Хранение проекта - где?

    git. Приватные проекты можно хранить на bitbucket.org, на гитхабе только за деньги. Все желания хранить проекты в гуглдрайвах/дропбоксах/яндексдисках убивай на корню.

    2. Ведение проект- как?

    гуглодоки для ТЗ
    asana или подобное для задач/багов
    история изменений кода есть в git, история изменений ТЗ есть в гуглодоках
    документацию хранить в коде (docstrings) и генерировать в виде HTML любым подходящим инструментом
    Ответ написан
    1 комментарий
  • Что делать, если PyCharm перестал нормально отображать цифры?

    longclaps
    @longclaps
    Всего-то 10 цифр - за один вечер к закорючкам приноровишься.
    А вот переменных что-то больно дофига (
    тыц
    Ответ написан
    Комментировать
  • Почему не работает тема в zsh?

    В описании темы написано

    NOTE: In all likelihood, you will need to install a Powerline-patched font for this theme to render correctly.
    https://github.com/Lokaltog/powerline-fonts

    добавьте в систему шрифты и в терминале выберите один из них
    Ответ написан
    Комментировать
  • Как заставить multiprocessing работать?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    import multiprocessing as mp
    
    data = [
        ('./wiki/wikido1.txt', './wiki/file_1.txt'),
        ('./wiki/wikiot1do2.txt', './wiki/file_2.txt'),
        ('./wiki/wikiot2.txt', './wiki/file_3.txt'),
    ]
    
    with mp.Pool(mp.cpu_count()) as pool:
        pool.starmap(Noun_Phrase, data)
    Ответ написан
    1 комментарий
  • Где может пригодиться физика программисту?

    @CHolfield
    Вы что, миллениал чтоли прости Г-споди? Геймдев, робототехника... Жизнь не ограничивается ИТ. Фундаментальные науки это как бы законы природы в нашей части вселенной, что значит "где физика может пригодиться?"? Вы меня шокируете)
    Ответ написан
    4 комментария
  • Как сделать авто-прием друзей вк?

    Noizefan
    @Noizefan
    обязательно поможем.
    1) изучи "Pythone"
    2) найди в апи вк нужные методы
    3) разработай софт
    Ответ написан
    3 комментария
  • Могут ли украсть сессию php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Как всегда, в теле вопроса написано совсем не то, что в заголовке.

    Отвечаем на оба вопроса

    Могут ли украсть сессию php?
    при нормальных настройках сайта (httponly cookies, SSL) - практически нереально. Только трояном с компа. Но если есть доступ к компу, то с сессиями уже заморачиваться как-то мелко.
    Хотя я не очень уверен насчет расширений браузера/тулбаров. Думаю, что они доступ к кукам имеют свободный.

    Может ли другой человек узнав ID сессии и приписав его в свой php скрипт получить доступ к данным сессии моего сайта?
    Разумеется, может.

    Только не описанным способом, конечно. Идентификация происходит через cookies. Соответственно, узнав ID, надо просто отправить нужный session_id со своего сервера или браузера.
    Ответ написан
    1 комментарий
  • Что происходит со шрифтом на сайте и в photoshop?

    SmthTo
    @SmthTo
    Все перепёлки мира будут оплакивать мою смерть.
    Это разница между движками рендеринга шрифтов в ОС и Photoshop'е. Плюс, браузеры вносят свою лепту.

    Чтобы было как на fonts.google.com, добавьте это в CSS:
    html, body {
    	-webkit-font-smoothing: antialiased;
    	-moz-osx-font-smoothing: grayscale;
    }

    Более ничего вы сделать не сможете.

    Update. Ну можно, конечно, хернёй помаяться ещё со следующими свойствами:
    -webkit-text-stroke: 0.4px rgba(0, 0, 0, 0.1); /* Сильно влияет на рендеринг (условно, т. к. сам механизм рендеринга навряд ли меняет), аккуратнее с этим свойством */
    text-shadow: #fff 0px 1px 1px; /* Да, LOL, оно тоже влияет на рендеринг */
     text-rendering: optimizeLegibility; /* Так и не понял результат работы  вот этого */
    Ответ написан
    6 комментариев
  • Как использовать информацию с api json в своем сайте?

    @uroot
    Вот пример с комментариями. В консоли выводятся все данные, лежат в data. Через alert вывел username и id.
    Ответ написан
    Комментировать
  • Почему адаптивная вёрстка не работает, на телефоне?

    Скорее всего вы забыли прописать
    <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    Ответ написан
    3 комментария
  • Обьясните зачем конкретно нужны Redis и Memcached и можно ли их связать с технологиями как nodejs?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Кешировать можно все, что лежит на диске или в БД. Если бы Вы писали на чем-то вроде PHP, то был бы смысл в Memcached, просто поставив его между СУБД и приложением, кешируя результаты запросов можно значительно увеличить производительность. А вот использовать его с node.js я не вижу смысла, потому, что в ноде можно и так держать все в структурах данных в памяти приложения, ведь нодовские приложения "долгоиграющие", они не перезапускаются при каждом следующем GET/POST запросе и не освобождают память. Поэтому мы можем разместить в оперативной памяти кеш прямо внутри приложения и сэкономить на межпроцессовом взаимодействии (memcached это все же другой процесс). Но от межпроцессового взаимодействия все же нельзя полностью отказаться, если один процесс ноды не справляется, то нужно запускать несколько и приклеивать пользователей к процессам (ip sticky, cookie sticky), если же нужно будет организовать взаимодействие между двумя пользователями, приклеенными к разным процессам, то тут нам поможет Redis, ZMQ, RabbitMQ для передачи событий из процесса в процесс.
    Ответ написан
    2 комментария
  • Где лучше учить sql?

    php10
    @php10
    Разработчик на PHP
    Напишите Highload проект, к примеру собирайте какую-нибудь информацию с сайтов.
    В процессе написания кода, начнете гуглить точечно про оптимизацию запросов и со временем придет общее понимание.
    Ответ написан
    2 комментария
  • Что такое кластер баз данных?

    bingo347
    @bingo347
    Crazy on performance...
    Попытаюсь объяснить на пальцах
    В большинстве случаев основная нагрузка идет на чтение БД, часто бывает, что одна машина не справляется с существующей нагрузкой, тогда поднимают кластер — запускают СУБД на нескольких машинах, одна из них объявляется мастером, остальные репликами
    Мастер занимается только записью и распространением готовых изменений по репликам
    А читаем мы только из реплик, балансируя нагрузку между ними, тем самым снижая нагрузку на каждую из них и уменьшая время отклика
    Ответ написан
    1 комментарий
  • Что такое кластер баз данных?

    @bychok300
    Кластеризация, если говорить простыми словами, - это разбиение на группы, по определенным критериям. Кластер это группа объектов.
    Ответ написан
    Комментировать