• Как создать сообщение об ошибке?

    @PavelMos
    Если сообщение об ошибке, которое будет видеть пользователь, если он ввел неправильную команду, то так же как и пример с ответом

    valid=('ударить', 'укусить', 'выйти'....) #список команд в tuple или list
    if message.text.lower() not in valid :
            a = message.from_user.username
            b = str(message.reply_to_message.from_user.username)
            bot.send_message(message.chat.id, ' сообщение об ошибке' ) #например, сообщение с перечислением доступных команд
    Ответ написан
  • При использовании команды input выдаёт ошибку, хотя в других случаях работает нормально. В чём суть проблемы?

    @PavelMos
    AttributeError: 'float' object has no attribute 'write'

    Есть что-то похожее на имя_переменной.write(.....
    ?
    Возможно, тут должен был быть некий объект класса файл или что-то еще, у которого есть встроенная функция write, которой он сам себя записывает куда-то. А по ошибке под этим именем сохранилось число, то есть объект типа float
    Всё вышеописанное также сообщает сам компилятор, нужно только перевести с английского и разобраться.

    Если нужно создание файлов с формулами, можно LaTex посмотреть.
    Ответ написан
    7 комментариев
  • Прошу помочь с организацией словаря в Python (парсинг)?

    @PavelMos
    название: автор: www.zzz.ru это {название:{автор:www.zzz.ru}} ?
    Если подразумевается, что в первом и втором цикле в all_views_hrefs и all_authors_names одинаковое число элементов, то делать цикл по длине (любого из них):

    dict_={}
    for i in range (0,len(...)):
       dict_[all_authors_names[i].text]={item_views_hrefs[i].text: item_views_hrefs[i].get('href')}
    Ответ написан
    1 комментарий
  • Как спарсить эту ссылку?

    @PavelMos
    link2=soup.findAll('source', label=('1080p','720p')) # или label='1080p'
    link2
    Out[7]: 
    [<source label="1080p" lang="ru" res="1080" src="https://r420203.kujo-jotaro.com/evangelion/3.1080.3e31d37bc4cef76b.mp4?hash1=be8049787056e7738662626b278da4dd&amp;hash2=62a66b9265a79ec0e8299525e33b91ca" type="video/mp4"/>,
     <source label="720p" lang="ru" res="720" src="https://r420203.kujo-jotaro.com/evangelion/3.720.c4258d66438b67df.mp4?hash1=85d66d38ea91c797807f15164e9c7c6f&amp;hash2=c044017832e918ae2f231a52b329261d" type="video/mp4"/>]
    link2[0]
    Out[8]: <source label="1080p" lang="ru" res="1080" src="https://r420203.kujo-jotaro.com/evangelion/3.1080.3e31d37bc4cef76b.mp4?hash1=be8049787056e7738662626b278da4dd&amp;hash2=62a66b9265a79ec0e8299525e33b91ca" type="video/mp4"/>
    link2[0].get('src')
    Out[9]: 'https://r420203.kujo-jotaro.com/evangelion/3.1080.3e31d37bc4cef76b.mp4?hash1=be8049787056e7738662626b278da4dd&hash2=62a66b9265a79ec0e8299525e33b91ca'


    Если через watch_additional_players

    link.findAll('span')[0].get('data-player-1080') #или другой плеер, или возможно регексп или список тут как-то использовать
    Out[20]: 'https://r208.kujo-jotaro.com/evangelion/3.1080.3e31d37bc4cef76b.mp4?hash1=f6957893c06e27e323f043075007f4cf&hash2=081c50cf272c6118adab7d27440958f8'
    Ответ написан
    Комментировать
  • Почему regex работает некорректно?

    @PavelMos
    * это жадный квантификатор, он захватывает всегда максимум, то есть будет собирать все (любые, в т.ч. запятые) символы до последней запятой. А на регекс101 при копипасте, возможно, последняя запятая не вставилась, поэтому выражение сработало корректно и остановилось на for_all,
    Ответ написан
    Комментировать
  • Как найти названия городов в строке?

    @PavelMos
    Можно с помощью fuzzywuzzy. Они сравнивает с образцом и выдаёт показатель схожести (100% - идентично).

    Задать список городов, максимально полный. Фуззи-вуззи будет проверять все слова на совпадение с чем-то из этого списка. Первое найденное с макс. совпадением вылет. Второе - прилёт. Но вещи вроде NY вручную предусмотреть.
    UPD список городов с аэропортами, тк просто названий городов очень много, будет много ложных срабатываний.
    Ответ написан
  • Как импортировать функцию?

    @PavelMos
    прописать путь к директории с файлом где функция, например, к директории modules, потом импортировать mymodyle (без указания py)
    или как выше приведено, сразу from mymodule import myfunc.

    sys.path.insert(0,'C:\\work\\py\\modules')
    import mymodule
    Ответ написан
    Комментировать
  • Программа должна парсить товары OZON и отсылать в телеграмм бота. Почему этого не происходит?

    @PavelMos
    Если парсер ничего не находит - это не ошибка.
    Смотреть надо, правильно ли он берёт линки и правильно ли разбирает потом страницы по линкам.
    UPD а перед этим проверить, что получает bs - print (soup.contents) или записать в файл (str(soup)) . Тут он не получает полного хтмла страницы.
    Ответ написан
    Комментировать
  • Как решить ошибку при использовании Google Sheets API на Python?

    @PavelMos
    ValueError: ('Unexpected credentials type', None, 'Expected', 'service_account')

    Компилятор же явно пишет, что надо посмотреть описание функции ServiceAccountCredentials.from_json_keyfile_name и проверить, передаются ли в неё нужные и корректные параметры.
    Ответ написан
    Комментировать
  • Как взять одну строку из MySql? Python?

    @PavelMos
    Почему бы сначала не начать вообще изучать основы питона и типы данных - строки, словари, разные виды списков ?
    '123456789' в {'id': '123456789'} это значение ключа 'id' в словаре. Соответственно, надо почитать, как работает и что возвращает fetchone и как из того формата, который она возвращает, взять то, что нужно (значение такого-то ключа)

    PS использовать подстановку параметров с конструкцией %s , (...) не рекомендуется. См.:
    https://pythobyte.com/sqlite-python-placeholder-fo...
    Ответ написан
    3 комментария
  • Что не так и как исправить?

    @PavelMos
    from selenium import webdriver
    from selenium.webdriver.common.by import By #тк к нему обращение напрямую по имени
    driver=webdriver.Chrome('C:\\chromedriver_win32\\chromedriver.exe')
    page1='https://steamcommunity.com/openid/login?openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=checkid_setup&openid.return_to=https%3A%2F%2Fauthsb.trade%2Flootlogin.php&openid.realm=https%3A%2F%2Fauthsb.trade&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select'
    
    driver.get(page1)
    
    driver.find_element(By.XPATH, f'//*[@id="steamAccountName"]').send_keys('xxx')
    driver.find_element(By.XPATH, f'//*[@id="steamPassword"]').send_keys('yyy')
    driver.find_element(By.XPATH, f'//*[@id="imageLogin"]').click()
    Ответ написан
    3 комментария
  • Почему выдает ошибку при вводе команды?

    @PavelMos
    await ctx.send(embed =  discord.Embed(description = f"""Баланс **{ctx.author}** состовляет **{cursor.execute("SELECT cash FROM users WHERE id ={}".format(ctx.author.id)).fetchone()[0]}**"""
    TypeError: 'NoneType' object is not subscriptable


    Вероятно пытаешься взять элемент из возвращаемого резульатат fetchone, а результат пустой None.
    Если так, что надо делать проверку и обработку условия, что делать дальше.
    Читай подробнее про работу с SQL на питоне и про то, что функции возвращают
    Ответ написан
    Комментировать
  • Почему не записываются данные в бд SQLITE?

    @PavelMos
    Надо проверить что делает функция записи "INSERT INTO 'users' ('user_id') VALUES (?)", (user_id,)) пользователя и функцию записи денег
    После нее если базу посмотреть через менеджер, в таблице изменения отображаются ?
    Ответ написан
    Комментировать
  • Как указать путь к файлу?

    @PavelMos
    Это в виндах ?
    Слеш в пути должен быть двойной + в конце, если добавляется имя файла, перед ним нужен слеш
    C:\\Projects\\telebot_test_functions\\photo
    Ответ написан
  • Яндекс.Практикум, Модуль 2, Библиотеки, Форматирование времени. Почему выдает ошибку на запросе Антона?

    @PavelMos
    потому что при 'Антон, который час?' программа в словаре Database ищет запись с ключом Антон, а её нет, и обработки такого варианта не предусмотрено

    elif elements[0] != 'Анфиса' and elements[1] == 'который час?':
            gay = elements[0]
            gay_city = DATABASE[gay]
    Ответ написан
    2 комментария
  • Как написать такое регулярное выражение?

    @PavelMos
    Потому что это шаблон, для конкретного числа чередований маленьких букв и дефисов , три с буквами и два дефиса
    Нужен универсальный шаблон, который с точки, за которой следует маленькая буква \.[a-z] , захватывает всю комбинацию из маленьких букв и дефисов до появления любого другого символа (или конца строки или файла) [a-z-]+
    еще надо предусмотреть наличие цифр в именах, возможный запрет на два дефиса подряд и другие возможные условия
    \.[a-z][a-z-]+
    Ответ написан
    Комментировать
  • Преобразовать из xls в csv python?

    @PavelMos
    разделитель это
    .... sep=';' .... )
    см. документации по пандас, она и на русском есть много где
    кодировка должна по умолчанию быть юникод, и в ней кириллица должна нормально отображаться.
    может быть, у тебя просмотрщик или редактор, в который ты CSV загружаешь, неправильно кодировку определяет ? выложил для примера кусок из csv
    Ответ написан
  • Как сложить словари в которых числа?

    @PavelMos
    См. про форматирование строк в питоне, форматированный вывод в питоне и про f-строки f-strings

    In[155]: print (f'Общий рост моей семьи : %s см' % ( sum(d.values() ) ) ) #самофикс - f' тут необязательно, этот префикс для другого способа форматирования используется с {xxx}
    Общий рост моей семьи : 514
    Ответ написан
    2 комментария
  • Почему не срабатывает регулярка?

    @PavelMos
    .*?
    href\=\"(.*?)\".*title=\"(.*)\".*breadcrumbs__item-link

    https://regex101.com/r/wDkzxW/1
    Ответ написан
    Комментировать
  • Как поменять значение во вложенном словаре по списку ключей?

    @PavelMos
    Ламерское решение, но должно работать. Есть функции exal и exec, они выполняют строку как строку кода.
    тогда
    1. сначала разбить first_.... через split в ['first', 'sec', 'x']
    2. создать словарь somedict={}
    3. задать значение например value=999
    4. создать и выполнить выражение
    exec ( "somedict = {'"+"':{'".join(x)+"'"+':'+str(value)+'}'*(len(x)) )

    после этого выполнится somedict={'first':{'sec':{'x':999}}}

    Но если хочется найти нормальное решение, рекомендую на инглише поискать, возможно что-то есть через рекурсию или какие-то модули
    апдейт:
    def mylist(L):
        if not L:
            return (999)
        else:
            return {L[0]: mylist(L[1:])}
        
    mylist(x)
    Out[120]: {'first': {'sec': {'x': {'y': {'z': 999}}}}}
    Ответ написан