• Как заменить ссылку внутри тэга img?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Находите нужные теги с помощью find_All(хотя select как по мне проще и красивее).
    Далее обращаетесь к нужным атрибутам найденных тегов. Вот самый простой код:
    from bs4 import BeautifulSoup
    
    html = '''
    <body>
        <img src="https://yandex.com/main.jpg">
    </body>
      '''
    
    soup = BeautifulSoup(html,'html.parser')
    
    tag = soup.img
    tag['src'] = 'https://google.com/main.jpg'
    
    print(soup)

    Результат:
    <body>
    <img src="https://google.com/main.jpg"/>
    </body>
    Ответ написан
    4 комментария
  • Почему обучение продвигается так медленно?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    А вы ждали мгновенного результата? Месяц - это очень мало. За месяц даже учебник для начинающих нормально не изучить. На тренировку мозга требуются существенно больше времени. Стартовый уровень, достаточный для найма, нарабатывается полгода-год. Пара-тройка лет практики в окружении профессионалов нужна, чтобы вырасти в мидлы. И процесс не останавливается никогда, чем больше вы тренируетесь, тем больший спектр задач можете решать и тем проще это вам даётся. Продолжайте стараться, всё придётся при должном упорстве.
    Ответ написан
    8 комментариев
  • Как записать видео с экрана?

    HemulGM
    @HemulGM Куратор тега Python
    Delphi Developer, сис. админ
    Получай скриншот рабочего стола и кодируй в видео
    Ответ написан
    Комментировать
  • Как перевести из str в bin?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Как вариант, конечно, можно начиная с конца умножать каждое число на 2 и там в степень ещё возводить

    А можно просто прочитать документацию и не изобретать велосипед:
    s = '1010101010101010101010110101010101011110101010010101010101011110'
    i = int(s, 2)
    Ответ написан
    1 комментарий
  • Как экранировать % возле %s?

    adugin
    @adugin Куратор тега Python
    Зачем используете устаревшее и неудобное форматирование?
    '{x}%\n'.format(x=100)
    Или так:
    f'{x}%\n'
    Ответ написан
    Комментировать
  • Как получить тип картинки из base64?

    @pcdesign
    Что-то в этом роде
    from base64 import b64decode
    import imghdr
    
    encoded_string = 'image base64 encoded'
    
    decoded_string = b64decode(encoded_string)
    extension = imghdr.what(None, h=decoded_string)
    Ответ написан
    2 комментария
  • Как парсить без бана?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Парсеры палятся на том, что ведут себя как роботы. Люди не обходят все доступные ссылки, только некоторое подмножество без ухода на большую глубину. Чтобы не попасться, надо изобразить группу людей шарящихся по сайту. Для этого надо после разбора страницы входа парсить только две-три ссылки с неё, делать случайные паузы между запросами, потом сбрасывать принятые куки, менять user agent и прокси и парсить другие две-три ссылки. Естественно, прокси не должны быть публичными. Если вы могли найти и скачать их список, то разработчики защиты тоже уже его скачали.
    Ответ написан
    Комментировать
  • Ошибка при установке PyAutoGUI, что не так?

    OSMANOF
    @OSMANOF
    Segmentation fault
    У вас Ленусенька кириллицей. Вот и ругается
    Ответ написан
    3 комментария
  • Как найти самый частый символ в строке?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    foo = 'cccc8923jbbdkcc'
    
    max_item = lambda s: max(t := {i: s.count(i) for i in s}, key=t.get)
    
    max_item(foo)
    # 'c'

    P.S. Это будет работать только для Python3.8+
    Ответ написан
    Комментировать
  • Как посчитать сумму цифр числа пока оно не станет однозначным?

    0xD34F
    @0xD34F
    def countDigitsSum(num):
      return num if num < 10 else countDigitsSum(sum(map(int, str(num))))

    или

    def countDigitsSum(num):
      while num > 9:
        num = sum(int(n) for n in str(num))
    
      return num
    Ответ написан
    Комментировать
  • Как можно ускорить работу данной программы?

    shabelski89
    @shabelski89
    engineer
    Всё уже объяснили, но от нечего делать положу на блюдечке:
    получаем файлы с россвязи и загружаем их в БД
    spoiler
    import requests
    import os
    import urllib3
    import csv
    import sqlite3
    
    
    source = r'https://rossvyaz.gov.ru/data/'
    abc3 = 'ABC-3xx.csv'
    abc4 = 'ABC-4xx.csv'
    abc8 = 'ABC-8xx.csv'
    def9 = 'DEF-9xx.csv'
    path = os.getcwd() + '\\NP\\'
    db = path + "np.db"
    try:
        os.mkdir(path)
    except OSError:
        pass
    
    file_list = [abc3, abc4, abc8, def9]
    
    
    table = "CREATE TABLE numbering_plan(prefix INT, begin INT, end INT, capacity INT, operator TEXT, region TEXT);"
    with sqlite3.connect(db) as connection:
        cursor = connection.cursor()
        cursor.execute(table)
    
    
    for file in file_list:
        urllib3.disable_warnings()
        r = requests.get(source + file, verify=False)
        open(path + file, 'wb').write(r.content)
        with open(path + file, 'r', encoding='utf-8') as f:
            dr = csv.DictReader(f, delimiter=';', quoting=csv.QUOTE_NONE)
            to_db = [(i['АВС/ DEF'], i['От'], i['До'], i['Емкость'], i['Оператор'], i['Регион']) for i in dr]
            with sqlite3.connect(db) as connection:
                cursor = connection.cursor()
                cursor.executemany("INSERT INTO numbering_plan (prefix, begin, end, capacity, operator, region) "
                                   "VALUES (?, ?, ?, ?, ?, ?);", to_db)



    далее уже все зависит от Вашей обертки ниже код для проверки, опять же коллеги выше это уже писали

    spoiler
    import sqlite3
    import os
    
    
    path = os.getcwd() + '\\NP\\'
    db = path + "np.db"
    
    num = 1
    
    while num:
        num = input('Введите номер в формате ABD/DEАххх ')
        prefix = num[:3]
        number = num[3:]
        search_query = 'SELECT * FROM numbering_plan WHERE prefix=? AND ? BETWEEN begin AND end;'
    
        with sqlite3.connect(db) as connection:
            cursor = connection.cursor()
            cursor.execute(search_query, (prefix, number))
            result = cursor.fetchall()
        print(result)


    скачка и загрузка файлов БД меньше минуты, поиск меньше секунды
    Ответ написан
    Комментировать
  • Как вывести pdf файл на страницу сайта?

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

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    with open("DATA.txt") as file:
    	lines = file.read().splitlines()
    
    for line in lines:
    	print(line)
    Ответ написан
    Комментировать
  • Чем отличаются библиотеки с префиксным символом "_" от библиотек без него?

    Судя по PEP 399, модули с префиксом написаны на C (ну или просто являются "ускоренными" вариантами, написанными на языке, отличном от Python).

    Что касается модулей не из стандартных библиотек, префикс может иметь смысл такой же как и везде в Python - означать, что данная библиотека не должна импортироваться напрямую, т.е. является приватной.
    Ответ написан
    Комментировать
  • Как понять [:,: 0] в python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Дополню немного ответ @sergey-gornostaev
    Это срез, вернее даже два.
    Дело в том, что в питоне объекты могут поддерживать протокол __getitem__, этот метод вызывается когда объект употребляется с квадратными скобками справа. Значение, указанное в квадратных скобках, будет передано в качестве аргумента этому методу.
    Тут есть два нюанса:
    В обычном выражении на питоне запятая означает что результат выражения - это кортеж. То. что вычислилось между запятыми, будет элементами кортежа:
    x=1,2,3
    Второй нюанс заключается в том, что в квадратных скобках питон поддерживает особый такой "синтаксический сахар" называемый срезами (slice).
    Вам действительно лучше почитать про срезы в книге. В общем у среза есть три аргумента и все необязательные. Если аргумента три то срез "под сахаром" выглядит так: 3:10:2 - "с третьего включительно по десятый исключительно с шагом 2".
    Срез 3::2 - означает "с третьего включительно до последнего включительно с шагом 2"
    Шаг можно опустить, по умолчанию он равен 1 и тогда не нужно второе двоеточие. Можно также не указывать и начало среза (типа сначала). Так : означает срез "от начала включительно до конца включительно с шагом 1".
    Такие срезы можно указать через запятую.
    Фактически фрейм - это трёхмерный массив. Первые два измерения - это высота и ширина, третье - это компоненты цвета.
    В вашем примере операцию проводят над всеми пикселями от верха и до низа, по всей ширине но в определённом канале.

    Правда, почитайте книгу. Такие вещи нужно осваивать последовательно, а не наскоком.
    Ответ написан
    2 комментария
  • Как найти работу без образования программиста?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Во-первых, стоит просить обратную связь у тех, кто отказал. Поинтересуйтесь причинами отказа. Во-вторых, поработать над составлением привлекательного резюме. В-третьих, наращивать уровень знаний, чтобы выделяться из толпы соискателей. На собеседованиях проявлять себя как инициативный, ответственный и трудолюбивый соискатель. Ну, и пытаться-пытаться-пытаться. Для получения первой работы нужно много времени и сил - это нормально, ведь джуны никому не нужны.
    Ответ написан
    Комментировать
  • Как изображение преобразовать в массив numpy?

    aRegius
    @aRegius
    Python Enthusiast
    Возьмите OpenCV, прочитайте изображение в режиме Grayscale (чтобы получить массив значений 0-255) и разделите на 255. Чтобы прочитать в режиме GS просто поставьте численное значение режима равным нулю:
    grayscale_image = cv2.imread(your_image, 0)
    Ответ написан
    Комментировать
  • Как изображение преобразовать в массив numpy?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Например:
    import numpy as np
    import cv2
    
    ...
    color_image = cv2.imread(FILE)
    gray_image = cv2.cvtColor(color_image, cv2.COLOR_BGR2GRAY)
    
    n_image = np.around(np.divide(gray_image, 255.0), decimals=1)


    [[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.2 0.7 0.9 1. 0.9 0.7 0.4 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.6 1. 1. 1. 1. 1. 1. 1. 0.8 0.1 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0.5 1. 1. 1. 1. 1. 1. 1. 1. 1. 0.8 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0.1 1. 1. 0.9 0.4 0.1 0. 0.1 0.4 0.9 1. 1. 0.4 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0.4 1. 1. 0.3 0. 0. 0. 0. 0. 0.3 1. 1. 0.7 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.9 1. 0.8 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.9 1. 0.6 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.3 1. 1. 0.3 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.2 0.6 1. 1. 0.6 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.5 1. 1. 1. 1. 0.5 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.6 0.8 0.8 0.9 1. 1. 0.6 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.4 1. 1. 0.7 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.4 1. 1. 0.4 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 0.7 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.9 1. 0.8 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0.7 1. 0.9 0. 0. 0. 0. 0. 0. 0. 0.1 1. 1. 0.7 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0.5 1. 1. 0.5 0. 0. 0. 0. 0. 0. 0.7 1. 1. 0.5 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0.1 1. 1. 1. 0.6 0.2 0. 0.1 0.3 0.8 1. 1. 1. 0.1 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0.5 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 0.4 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.5 1. 1. 1. 1. 1. 1. 1. 1. 0.4 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.2 0.6 0.9 1. 1. 0.8 0.5 0.1 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]]

    Если округлять не нужно - то достаточно
    np.divide(gray_image, 255.0)
    З.Ы. Видео не смотрел
    Ответ написан
    1 комментарий
  • Как реализоваться сохранение сессии в selenium chrome чтобы логин информация сохранялась?

    glaphire
    @glaphire
    PHP developer
    Чтобы сохранять данные между сессиями, нужно создать профиль пользователя chrome и в коде конфига хромдрайвера указать путь к папке с этим профилем. Обычно профиль нужно создать заранее (зайти как юзер в свой хром, создать нового пользователя, найти в системе папку с этим профилем и скопировать ее к себе в репозиторий).
    Пример на SO
    Ответ написан
    Комментировать
  • Можно ли проверить 2 текста в python на синонимы?

    @dmshar
    Как по мне, 'красное яблоко' и 'бордовое яблоко' - это абсолютно не синонимы. Как минимум столь же разные сорта как и между красным и зеленым яблоком.
    А например, "красное яблоко" и "красное авокадо" - это синонимы? Да? Нет? Почему?

    А если для вас это синонимы - то сделайте свой список синонимов и пользуйтесь им. Просто поиск по этому списку. На совпадение.
    ИИ - это не волшебная палочка. Его сначала надо научить, что вы считаете синонимами, а что нет. А тут работы - выше крыши, вы же не знаете, какие именно слова она будет принимать на вход.
    Ответ написан
    Комментировать