Ответы пользователя по тегу Python
  • Как убрать выведение сообщения err1?

    @PavelMos
    if c != "множення" and "додавання" and "віднімання" and "ділення" :
        print(err1)

    в данной записи это выражение не проверяет, входит ли в c в список допустимых названий операций. Получается, что с сравнивается с Умножение, получается результат True или False. Следующее выражение это логическое and с двумя операндами. Первое это логическое True или False, второй это "додавання". Затем результат снова идёт в выражение and со следующим словом и тд.

    См. про скобки и последовательность логических операций в питоне, а также про in и any
    Например,
    if c not in ("множення" , "додавання" ,"віднімання" , "ділення" ):
    Ответ написан
    Комментировать
  • Как вытащить данные из списка кортежей Python?

    @PavelMos
    Задача - сгенерировать билет с номером рейса и номером посадочного места + проверить не выдано ли билетов больше, чем мест на этот конкретный рейс
    1 запрос рейса = генерация 1 билета ?
    Сама постановка вопроса также странная, билеты на конкретные места не генерируются, а забираются из набора существующих (свободных) мест, например, в виде словаря.
    Ответ написан
  • Не работает код внутри def?

    @PavelMos
    То есть весь текст скрипта обёрнут в def fuction1() : ....
    и потом в другом файле import function1 и вызов function1() ?
    URL он нормально видит ? В тексте везде try, то есть если URL не откроется, скрипт не остановится с ошибкой, а просто сделает pass.
    Как вариант, можно запустить с отладкой, или расставить контрольные print (...)
    Ответ написан
    Комментировать
  • Пожалуйста найдите ошибки в коде Python?

    @PavelMos
    Markup - types.ReplyKeyboardMarkup(resize_keyboard= True)

    Это ошибка, вместо дефиса должно быть что-то другое. Возможно, где-то еще ошибки есть
    Ответ написан
    Комментировать
  • Как справить AttributeError?

    @PavelMos
    Поискать текст сообщения об ошибке и выяснить, что decode в третьем питоне применяется к строке, которая не str, а bytes. У обычной строки такой встроенной функции нет (но есть encode) - это можно проверить через __dir__().
    То есть тут декодирование не нужно.
    str1='Hello, World'
    str2=str1.encode('utf-8')
    print (str2, type (str2))
    b'Hello, World' <class 'bytes'>
    Ответ написан
    Комментировать
  • Как решить эту задачу на python?

    @PavelMos
    Возведение в дробную степень это возведение в числитель дроби и извлечение корня, равного знаменателю дроби.
    На шаге x=-4.1 получается извлечение корня из отрицательного числа
    (-41)**(8.1)
    Если на этом шаге значение функции не определяется, то шаг надо пропускать по условию задачи.
    Ответ написан
    Комментировать
  • Как сделать поиск по первому заходу на сайт?

    @PavelMos
    При обходе с сайтов сначала получить исходный код страницы soup = BeautifulSoup(browser.page_source, 'lxml')
    а потом к нему применять разные функции - поиск linked, twitter и так далее
    То есть в main
    for website in websiteList:
    ..
    soup = BeautifulSoup(browser.page_source, 'lxml')
    linkedResult = linked(soup) # принимает на вход не url а уже разобранную структуру т.е. soup
    tgResult = telegram (soup)

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

    @PavelMos
    для одного уровня вложенности
    pos1 = ['Один',  'Два',  'Три',  ['Четыре',  'Пять',  'Шесть' ], 'Семь']
    pos2 = []
    for i in pos1:
        if type(i) != list:
            pos2 += [i] # += для списков это exndend, тут добавляется строка как один элемент, а не как список символов строки, и поэтому в примере получалось posl = ['О', 'д', 'и', 'н',  'Д', 'в', 'а',  'Т', 'р', 'и', 
        else:
            pos2 += i # extend сразу последовательность как следующий элемент как список, то есть список слов, т.к. он и есть список слов
    # то есть += или extend слово / строка - добавит слово как список символов, 
    # а += или extend [..] добавит слово или строку как отдельный элемент 
    # см про append и extend
    print (pos2)
    Ответ написан
    Комментировать
  • Как спарсить тег со вложенными в него тегами в BS4?

    @PavelMos
    Если data-tagnames="Нужный мне текст" , то это атрибуты тега. Того тега, который внутри найденного первый раз.

    for i in block:
        try:
            print ( i, ':', i.get('data-tagnames', '\r\n') )
        except Exception:
            print (i, ':','Attr.: no data-tagnames', '\r\n')
    Ответ написан
    Комментировать
  • Как заставить elif вернуться к циклу while True для повтора самого цикла?

    @PavelMos
    Если нужно крутить цикл постоянно, но иметь возможность прекратить, можно использовать переменную-флаг. Например,
    while flag: #сначала flag равен True, а в цикле для прекращения может быть установлен в False по какому-то условию.
    Тут флаг после всех if может сохраняться True или становиться False,
    Ответ написан
    Комментировать
  • Как запустить скрипт FFMPEG, который парсит тренды с тик ток и заливает их в youtube?

    @PavelMos
    Нужен питон, и проверить, какой версии, второй или третьей, потому что в примере папка python2 и возможно скрипт для второго питона, а не третьего. Тогда нужно ставить старый питон или искать версию для нового или смотреть ,что в скрипте надо поменять (а может, и ничего не нужно).
    Нужен youtube-dl
    Нужен ffmpeg
    Нужен питоновский скрипт upload.py
    Нужен curl
    нужно чтобы всё эти приложения могли вызываться (были видимы) из папки, из которой запускается скрипт
    Ответ написан
  • Почему данный скрипт может падать с ошибкой TypeError: cannot unpack non-iterable NoneType object?

    @PavelMos
    Какой-то из объектов оказался пустым NoneType, и с ним невозможны те операции, которые прописаны в скрипте.
    Надо смотреть конкретную строку, где ошибка.
    Может быть, кто-то по тому, что упомнянут unpack, и без этого поймет, где ругается.
    Ответ написан
    1 комментарий
  • Почему в бд MySql не сохраняются данные?

    @PavelMos
    (message.text == "фб" or message.text == "Фб" or message.text == "ФБ" or message.text == "фБ") можно заменить на message.text.lower()=='фб'
    Ответ написан
    Комментировать
  • Как сделать фильтрацию таблицы, чтобы выводились не все колонки датасета, а только 1 колонка?

    @PavelMos
    bikes[bikes['Holiday'] == 'Holiday'][['Date','Holiday']]

    те сначала задается условие фильтрации, потом условие, что выводить, столбец[x] или список [[x,y]]
    Ответ написан
    2 комментария
  • Почем ошибка TypeError: run() got an unexpected keyword argument 'bot'?

    @PavelMos
    Если ошибка непонятна, пользуйся переводом и/или смотри в документации. У client.run нет аргумента bot=...

    https://discordpy.readthedocs.io/en/latest/api.htm...

    run(token, *, reconnect=True, log_handler=..., log_formatter=..., log_level=..., root_logger=False)¶
    A blocking call that abstracts away the event loop initialisation from you.
    Ответ написан
  • Как спарсить нужный текст?

    @PavelMos
    Всё правильно. Далее
    for row in body:
       print (row.text)

    UPD даже лучше так
    for i in body: 
        print ([j.text for j in  i.find_all('td')])
    Ответ написан
    Комментировать
  • Как создать телеграм бота, который выдаёт ссылку на регистрацию?

    @PavelMos
    URL-ссылка это строка жи. По заданному алгоритму к основной части URL можно добавить какой угодно ref=123456...
    Нужно также вести список соответствий выданых уникальных ссылок и юзерайди
    Ответ написан
    Комментировать
  • Как конвертировать список с ценами в Float или любой формат с которым можно проводить математические операции!?

    @PavelMos
    Ты пытаешься использовать прикладные модули питона, не овладев достаточно основами языка.
    data = json.loads(data_str)
    #получается список списков из форматированной строки. 
    #Этот список списков вероятно надо загрузить в Pandas,  в таблицу.
    result = '\n'.join(map(str, data)) # 
    #join берёт список и объединяет его в строку с символом или строкой разделителем.  
    #И еще и map http://pythonicway.com/python-functinal-programming. 
    # Результат не имеет смысла для твоей задачи.
    f_res = '[Date, Amount]\n' + result #Как бы верно, если для таблицы в виде списка 
    #списков надо добавить заголовки, то можно к заголовкам присоединить  саму таблицу . 
    #Но здесь  не имеет смысла.  Cам заголовок в виде строки, а не списка из элементов, 
    #в таблице не 2, а 3 столбца, и самой таблицы в виде #списка списков уже нет - 
    #преобразована обратно в строку
    f_res1 = re.findall(r', *.*,', f_res) # непонятно что нужно найти. См. про регекспы, удобно тренироваться на #regext101.com
    f_res1_1 = ' '.join(f_res1[0:30])
    f_res2 = f_res1_1.replace(',', ' ') # тут код имеет смысл,  если предположить, что в f_res1 есть 
    #список найденных результатов и от него берётся первые 30 элементов 
    #(надо заранее проверять, есть ли в нём столько, или предусмотреть обработку ошибки).  
    f_res3 = {'price': f_res2} # допустим создаётся словарь ключ price, значение - длинная строка
    f_res4 = pd.DataFrame(f_res3, index=[0])# создать датафрейм из словаря это pd.DataFrame.from_records(...


    Можно сделать как в предыдущем вопросе
    https://qna.habr.com/q/1195350
    import pandas as pd
    req = requests.get('https://steamcommunity.com/market/listings/730/Glove%20Case')
    search = re.search('var line1=(.+);', req.text)
    data_str = search.group(1)
    data1 = json.loads(data_str) #получем с помощью json или через split список строк, 
    #который будет преобразован в 3 колонки
    data2 = [i.replace('"', '').split(',') for i in data] # обработать строки  - 
    #убрать лишние двойные кавычки, разбить каждую строку на 3 элемента
    df1 = pandas.DataFrame.from_records(data=data2, columns=['c1','c2','c3']) #загрузить, назвать колонки
    df1.dtypes()#проверить, какие типы получились при импорте, и привести колонки к нужным типам
    df1['c1'] = df1.apply(lambda x: x[1].replace(' +',''), axis=1)  #убрать из строки с датой лишние символы, 
    #но это можно было бы сделать и на каком-то из предыдущих шагов с помощью регекспа или replace
    df1['c1'] = pandas.to_datetime(df1['c1']) #преобразовать в тип datetime
    df1['c2'] = pandas.to_numeric(df1['c2']) #преобразовать в число,  пандас должен понять, что будет float
    df1['c3'] = pandas.to_numeric(df1['c3']) # преобразовать в число, паднас должен понять, что будет int


    а можно было до загрузки пройтись по списку и удалить одинарные кавычки и 2 и 3 колонки и возможно тогда бы пандас сразу их проимпортировать как float и int например так
    data3 = [(i[0].replace(' +', ''), i[1], int(i[2])) for i in data2]

    и тогда осталось бы только преобразовать в дату первую колонку датафрейма
    Ответ написан
    2 комментария
  • Как преобразить список {} из str в список?

    @PavelMos
    Это не список, а словарь.
    Нужно строку такого формата во что переделать - в словарь {text: текст} или в список [text, текст] ?
    Если в строке словарь с большей вложенностью, то при переводе в последовательный список там структура порушится.
    Для таких строк можно также json использовать
    Ответ написан
  • [WinError 740] Запрошенная операция требует повышения. как исправить?

    @PavelMos
    tesseract.exe в директории d:\shalost.py ?
    а скрипт откуда вызывается ? test1.png тогда должен быть в директории со скриптом
    Ответ написан