Ответы пользователя по тегу Python
  • Как можно записать текст(который содержится в текстовом файле) в NoSql (По порядку)?

    romesses
    @romesses
    Backend инженер
    Можно разбить строки на составные части при помощи регулярных выражений.
    Вот, частичный вариант для затравки:
    /(Delphi\s\S+)\s(\S+\+?)$/gm
    где находятся пара Delphi XE и 2990+
    Остальное - сам.
    Ответ написан
    Комментировать
  • Почему ломается кодировка в Python?

    romesses
    @romesses
    Backend инженер
    Python3
    with io.open("hello.txt", "r", encoding="utf-8") as f:
         s = f.read() # в строке будут декодированные кириллические символы
         print( s )
         print( s[:7] ) # используем срез
    Ответ написан
    Комментировать
  • Как автоматом декодировать json с текстом в разных кодировках?

    romesses
    @romesses
    Backend инженер
    Нет никаких смешанных кодировок. У вас путаница в голове.
    Из вашего же отрывка кода (судя по всему, скопировано с отладочного вывода):
    >>> qq='content="summary_large_image" />\n<meta name="twitter:label1" content="Примерное время для чтения">\n\t<meta name="twitter:data1" content="1 минута">\n<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://streetclimate.ru/#organization","name":"\\u0421\\u0442\\u0440\\u0438\\u0442-\\u041a\\u043b\\u0438\\u043c\\u0430\\u0442","url":"https://какой-то сайт.ru/","sameAs":[],"logo":{"@type":"ImageObject","@id":"https://какой-то сайт.ru/#logo","inLanguage":"ru-RU","url":"https://какой-то сайт.ru/wp-content/uploads/2018/12/3_White_logo_on_color1_269x67.png","width":269,"height":67,"caption":"\\u0421\\u0442\\u0440\\u0438\\u0442-\\u041a\\u043b\\u0438\\u043c\\u0430\\u0442"},"image":{"@id":"https://какой-то сайт.ru/#logo"}},{"@type":"WebSite","@id":"https://какой-то сайт.ru/#website","url":"https://какой-то сайт.ru/","name":"\\u0421\\u0442\\u0440\\u0438\\u0442-\\u041a\\u043b\\u0438\\u043c\\u0430\\u0442","description":"\\u041f\\u0440\\u043e\\u0434\\u0430\\u0436\\u0430, \\u0443\\u0441\\u0442\\u0430\\u043d\\u043e\\u0432\\u043a\\u0430 \\u0438 \\u043e\\u0431\\u0441\\u043b\\u0443\\u0436\\u0438\\u0432\\u0430\\u043d\\u0438\\u0435 \\u043a\\u043e\\u043d\\u0434\\u0438\\u0446\\u0438\\u043e\\u043d\\u0435\\u0440\\u043e\\u0432, \\u0441\\u043f\\u043b\\u0438\\u0442-\\u0441\\u0438\\u0441\\u0442\\u0435\\u043c \\u0438 \\u0442\\u0435\\u043f\\u043b\\u043e\\u0432\\u044b\\u0445 \\u0437\\u0430\\u0432\\u0435\\u0441 \\u0432 \\u0421\\u041f\\u0431 \\u0438 \\u041b\\u0435\\u043d\\u0438\\u043d\\u0433\\u0440\\u0430\\u0434\\u0441\\u043a\\u043e\\u0439 \\u043e\\u0431\\u043b\\u0430\\u0441\\u0442\\u0438.",'
    >>> print(qq)
    content="summary_large_image" />
    <meta name="twitter:label1" content="Примерное время для чтения">
    	<meta name="twitter:data1" content="1 минута">
    <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://streetclimate.ru/#organization","name":"\u0421\u0442\u0440\u0438\u0442-\u041a\u043b\u0438\u043c\u0430\u0442","url":"https://какой-то сайт.ru/","sameAs":[],"logo":{"@type":"ImageObject","@id":"https://какой-то сайт.ru/#logo","inLanguage":"ru-RU","url":"https://какой-то сайт.ru/wp-content/uploads/2018/12/3_White_logo_on_color1_269x67.png","width":269,"height":67,"caption":"\u0421\u0442\u0440\u0438\u0442-\u041a\u043b\u0438\u043c\u0430\u0442"},"image":{"@id":"https://какой-то сайт.ru/#logo"}},{"@type":"WebSite","@id":"https://какой-то сайт.ru/#website","url":"https://какой-то сайт.ru/","name":"\u0421\u0442\u0440\u0438\u0442-\u041a\u043b\u0438\u043c\u0430\u0442","description":"\u041f\u0440\u043e\u0434\u0430\u0436\u0430, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0434\u0438\u0446\u0438\u043e\u043d\u0435\u0440\u043e\u0432, \u0441\u043f\u043b\u0438\u0442-\u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u0442\u0435\u043f\u043b\u043e\u0432\u044b\u0445 \u0437\u0430\u0432\u0435\u0441 \u0432 \u0421\u041f\u0431 \u0438 \u041b\u0435\u043d\u0438\u043d\u0433\u0440\u0430\u0434\u0441\u043a\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438.",
    >>>

    "\u0421\u0442\u0440\u0438\u0442-\u041a\u043b\u0438\u043c\u0430\u0442"
    отлично раскодируется в JSON:
    Стрит-Климат


    Добавлено
    нельзя просто копировать из
    '{"hello": "\\u043f\\u0440\\u0438\\u0432\\u0435\\u0442"}'

    все что внутри одинарных кавычек. Для вывода на экран есть дополнительное экранирование обратных слэшей!

    А если попробовать так:
    s = json.dumps(d, ensure_ascii=True)
    print(s)

    То есть, JSON не содержит двойное экранирование юникода. А при выводе в IDLE в качестве строки добавляется дополнительное экранирование. Не нужно путаться!

    Вывод: если копировать с отладочного вывода, то предварительно выводить на отладку содержимое строки в кавычках.
    Ответ написан
    3 комментария
  • Как устранить зависания в запросах к БД Postgres?

    romesses
    @romesses
    Backend инженер
    К коду есть замечания:
    Свалено все в кучу (требуется рефактринг)
    Риск инъекций SQL. Используйте SQL query builder/ORM.
    Нет проверок результата работы с СУБД.

    Как решить:

    send_alert_to_mail синхронна и вызывает блокировку - сделать асинхронным вызовом и даже отправлять в очередь специально для отправки писем.

    Обвернуть все вызовы БД декоратором с замером времени исполнения. Обычно, проблема не в СУБД, а во взаимодействии с ней и всякими блокировками, как с send_alert_to_mail.

    Поптыка
    очепятка :-)
    Ответ написан
    2 комментария
  • Как залить бота на хероку без ошибок?

    romesses
    @romesses
    Backend инженер
    Комментировать
  • Как сохранить данные на сервере?

    romesses
    @romesses
    Backend инженер
    Заезженная тема, однако.
    Надо просто читать документацию.
    А вообще, используйте эти addons чтобы данные никуда не исчезали.
    Или просто смените хостинг, если вам надо бесплатно эти ограничения не страивают.
    Ответ написан
    Комментировать
  • Tesseract + pyarmor + python. Как?

    romesses
    @romesses
    Backend инженер
    Тессеракт - это сторонняя зависимость. При обфускации как бы неясно что она будет использована, не так ли?
    Ответ написан
  • Как делать действие раз в секунду не прерывая остальной код?

    romesses
    @romesses
    Backend инженер
    С помощью asyncio
    Ответ написан
    Комментировать
  • Почему не устанавливатся в python pyaudio?

    romesses
    @romesses
    Backend инженер
    src/_portaudiomodule.c(29): fatal error C1083: ЌҐ г¤ Ґвбп ®вЄалвм д ©« ўЄ«о祭ЁҐ: portaudio.h: No such file or directory,
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.28.29333\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2

    Для установки нужно иметь заголовочные файлы portaudio.
    Ну и в Windows сборка обычно заканчивается приключениями.
    Ответ написан
  • Как корректно выполнить команду lsblk через python в Linux?

    romesses
    @romesses
    Backend инженер
    Не знаю почему, но не проще ли запустить с ключом -J для получения JSON?!

    lsblk -o NAME,FSTYPE,SIZE,TYPE,MOUNTPOINT -l -J
    {
       "blockdevices": [
          {"name":"loop0", "fstype":"squashfs", "size":"9.1M", "type":"loop", "mountpoint":"/snap/canonical-livepatch/95"},
          {"name":"loop1", "fstype":"squashfs", "size":"91.3M", "type":"loop", "mountpoint":"/snap/go/7165"},
          {"name":"loop3", "fstype":"squashfs", "size":"99.2M", "type":"loop", "mountpoint":"/snap/core/10859"},
    ...


    Добавлено
    Некоторые разделы действительно с fstype null. По-моему, их нужно просто пропускать.
    Ответ написан
    7 комментариев
  • Что делать с кодом после того, как он написан?

    romesses
    @romesses
    Backend инженер
    Когда ПО разработано, его нужно доставить до конечного пользователя. Это называется развертывание ПО, англ. Software deployment (Википедия).
    ПО может работать на другом компьютере, или на специальной железяке с функцией сервера, к которой доступ осуществляется по сети. В случае работы на сервере, ПО должно работать в функции сервера, обрабатывающего запросы с клиента.

    Для настольного обычно используют установщики ПО (software installer). Подготовив набор файлов установщика (обычно 1 файл), его публикуют где-то в каталогах ПО в интернете или просто на своем веб-сайте. Пользователь, скачивая, устанавливает ПО и запускает его для работы.

    Для развертывания ПО на сервере есть множество способов.
    Примитивный способ:
    запаковать в ZIP, затем перенести код на сервер по FTP, распаковать в директории.

    Более разумный:
    У себя на компьютере разрабатывать и когда добавлена новая фунция или исправление, синхронизировать изменения по Git в хостинг Git (GitLab.com, GitHub.com, BitBucket.com и прочие). При разворачивании на сервере синхронизировать с репозитория Git на сервер.

    Есть веб-сайты поставщиков услуг, при помощи которых можно устанавливать ПО, умея работать лишь с Git (PaaS). Суть состоит в том, что при синхронизации кода на удаленный репозиторий Git, срабатывает установка установщика и он сам автоматически устанавливает ПО и запускает новую версию. И все это без необходимости в знании как работают сервера.
    Ответ написан
    Комментировать