Задать вопрос
  • Как вместо цифр использовать переменные в txt='0,1,2,3,4'?

    @o5a
    Эрнест Варданян, нужно будет добавить другие модули для чтения и копирования данных. Вот так набросал. Пытаемся открыть существующий файл и лист в нем, если есть, копируем и запоминаем последнюю строку. Если нет, создаем с нуля. Далее все почти как раньше было.
    import xlwt
    import xlrd
    from xlutils.copy import copy as xlcopy
    
    filename = "test.xls"
    
    try:
        book = xlrd.open_workbook(filename)
        sheet = book.sheet_by_index(0)
        last_row = sheet.nrows
        book = xlcopy(book)
        sheet = book.get_sheet(0)
    except Exception as e:
        print(e)
        book = xlwt.Workbook()
        sheet = book.add_sheet("Sheet1")
        last_row = 0
    
    # твои данные для занесения
    data = [
    ['player1', 'win', '101'],
    ['player2', 'lose', '102']]
    
    for row_index, row in enumerate(data, last_row):
        for col_index, value in enumerate(row):
            sheet.write(row_index, col_index, value)
    
    book.save(filename)
  • Как добавить пакет в Heroku?

    @o5a
    gederuzsk, можно в requirements вместо строки с "instagram=" прописать ее путь в github, чтобы ставилось оттуда
    https://github.com/OlegYurchik/pyInstagram/archive/master.zip

    Хотя не знаю, работает ли этот метод установки в heroku, не пробовал.
  • Как добавить пакет в Heroku?

    @o5a
    Ошибка говорит о том, что pip не может найти указанную в requirement конкретную версию 2.1.0 библиотеки.
    Если посмотреть на ее сайте https://pypi.org/project/instagram/ то там тоже последняя 1.3.4.
    Не знаю, откуда у вас бралась 2.1.0, возможно это на самом деле не та instagram, что в репозитории, а какая-то схожая с ней.
    Или же смените в файле версию на последнюю 1.3.4.
  • Как вместо цифр использовать переменные в txt='0,1,2,3,4'?

    @o5a
    Ernest123,
    import xlwt
    
    book = xlwt.Workbook()
    sheet1 = book.add_sheet("Sheet1")
    
    # твои данные для занесения в Excel
    data = [
    ['player1', 'win', '101'],
    ['player2', 'lose', '102']]
    
    for row_index, row in enumerate(data):
    	for col_index, value in enumerate(row):
    		sheet1.write(row_index, col_index, value)
    
    book.save("test.xls")
  • Почему не работает in в python 3?

    @o5a
    maxmine2, ясно, я не глянул сначала, думал там сравнение одинаковых размерностей.
    В таком случае можно так:
    if any(all(cell in ocells for cell in combo) for combo in win_combos):
        # есть совпадение комбинации нулей

    Здесь проверяем, что все ячейки из любой комбинации попадают в набор ocells.

    Или аналогично через пересечение множеств:
    oset = set(ocells)
    if any(not(set(combo)-oset) for combo in win_combos):
  • Как обьединить 2 списка в 1 словарь на Python?

    @o5a
    Владимир Филинский,
    Лучше придерживаться одного формата данных, не придется в дальнейшем проверять тип и по-разному обрабатывать его. Т.е. даже в случае одиночного значения все равно использовать список, в данном примере вместо 0 использовать [0].
    {'Интендификатор мастера': 0, '654': [1, 3, 4], '2425': 2, '—': [5, 6, 7, 8, 9, 10]}
    {'Интендификатор мастера': [0], '654': [1, 3, 4], '2425': 2, '—': [5, 6, 7, 8, 9, 10]}
  • Как найти есть ли последовательной элементов в списке?

    @o5a
    Александр, проверка через поиск подстроки в строке может выдать ошибочный результат, если элементы из нескольких символов и могут пересекаться. Можно проверить именно вхождение списка, перебирая по индексу, например так:
    a = ['p', 'p', 'p', 'p', 'p', 'p', 'figure', 'h2', 'figure', 'p', 'p', 'p', 'p', 'p', 'p']
    patt = ['p', 'figure', 'h2', 'figure']
    
    if any(a[i:i+len(patt)] == patt for i in range(len(a)-len(patt))):
    	print('found')
  • Что за ошибка и как исправить?

    @o5a
    Андрій Жеребнюк, для скриптов, использующих кириллицу, нужно в начале файла добавить строку, указывающую кодировку. Добавь первой строкой:
    # coding:utf-8
    или windows-1251 в зависимости от кодировки твоего скрипта.
  • Почему рассылка сообщений юзерам бота не работает?

    @o5a
    Николай Неизвестный, не надо ограничивать все только одной записью words[0], а выводить полностью words
    return words
    Только учитывать, что fetchall выдает кортеж на каждый ряд записей, т.е. words будет вида [(101,), (102,), (103,)]
    Соответственно или сразу привести к обычному или учитывать в том месте, где будет использовать вывод от all_id(), видоизменить так например:
    text = base_work.all_id()
    bot.send_message(message.chat.id, 'В течении 3 секунд, отправиться всем пользователям!')
    for i, *_ in text:
  • Почему не работает bot.callback_query_handler?

    @o5a
    Потому что обрабатывать все вызовы надо в одном обработчике в зависимости от callback_data
    @bot.callback_query_handler(func=lambda call:True)
    def call_handler(call):
        if call.data == "first":
            bot.send_message(call.message.chat.id, text="Введите свой вопрос")
        elif call.data == "sec":
            bot.send_message(call.message.chat.id, text="Пришлите свои варианты ответа в столбик")


    так или же вызовом своих процедур

    @bot.callback_query_handler(func=lambda call:True)
    def call_handler(call):
        if call.data == "first":
            call_opros(call)
        elif call.data == "sec":
            call_answer(call)
    
    def call_opros(call):
        bot.send_message(call.message.chat.id, text="Введите свой вопрос")
    
    def call_answer(call):
        bot.send_message(call.message.chat.id, text="Пришлите свои варианты ответа в столбик")
  • Почему рассылка сообщений юзерам бота не работает?

    @o5a
    Возможно base_work.all_id() и выдает только одно значение.
  • Класс Fraction: как добавить операции с целыми числами?

    @o5a
    Александр, и в чем проблема? Чтобы сложить две дроби, нужно привести их к общему знаменателю. Т.к. у целого числа знаменатель 1, то 1-ю дробь менять не надо, а 2-ю (целое число) просто домножить на знаменатель изначальной (1-й) дроби.
  • Python telegram bot || Можете помочь с ботом, парсером?

    @o5a
    ghazar7an, конечно будет выдавать ошибку, приведенный код пытается получить значение ключа от списка, что естественно невозможно. Стоит подучить основы языка. Если цель по каждой новости выводить "url текст новости", можно сделать так
    new_news = []
    soup = BeautifulSoup(page.text, "html.parser")
    news = soup.findAll('a', class_='news-item')
    for i in range(len(news)):
        if news[i].find('span', class_='title') is not None:
            new_news.append(f"{news[i]['href']} {news[i].text}")


    а в самой отправке текста оставить как раньше было
    bot.send_message(message.chat.id, ('\n'.join(new_news[:5])))


    И в цикле лучше использовать сами элементы списка, а не по индексу, т.е. вместо
    for i in range(len(news)):
        news[i]['href']
    
    использовать
    
    for item in news:
        item['href']
  • Python telegram bot || Можете помочь с ботом, парсером?

    @o5a
    ghazar7an, вот в этом цикле, где ищется title, там же находится и ссылка
    new_news = []
    soup = BeautifulSoup(page.text, "html.parser")
    news = soup.findAll('a', class_='news-item')
    for i in range(len(news)):
        print('ссылка', news[i]['href']) # здесь находится ссылка на соответствующую новость.
        if news[i].find('span', class_='title') is not None:
            new_news.append(news[i].text)

    сейчас от каждой новости берется только текст news[i].text, соответственно бери и ссылку, пример я привел.

    для приведения относительной ссылки к абсолютной можно использовать
    requests.compat.urljoin('https://news.am', news[i]['href']))
  • Python telegram bot || Можете помочь с ботом, парсером?

    @o5a
    ghazar7an, у тебя в каждом news[i] как раз присутствует 'href' со ссылкой news[i]['href']. Вот и сохраняй ссылку вместе с текстом как нравится.
  • Телеграм бот. В чём ошибка?

    @o5a
    Liperr, достаточно вывести содержимое любого получившегося location и обращаться соответственно его структуре. Например, для US:
    [{'coordinates': {'latitude': '37.0902', 'longitude': '-95.7129'},
      'country': 'US',
      'country_code': 'US',
      'country_population': 310232863,
      'id': 225,
      'last_updated': '2020-04-15T18:00:46.171813Z',
      'latest': {'confirmed': 607670, 'deaths': 25832, 'recovered': 0},
      'province': ''}]


    Соответственно не location['confirmed'] , а location[0]['latest']['confirmed'] ну и другие аналогично.
  • Телеграм бот. В чём ошибка?

    @o5a
    Liperr, нужно учитывать структуру данных. В основном коде правильное обращение
    location[0]['latest']['deaths']
    а в коде с ошибкой
    location['deaths']
  • Как решить это уравнение?

    @o5a
    C-J, надо не забывать их импортировать из math
  • Как сложить значения у одинаковых ключей в списке?

    @o5a
    organica, Для сортировки массива по необычному условию можно использовать параметр key, в который передается функция ранжирования. В данном случае это можно сделать так
    grouped = # массив суммированных значений из предыдущего кода
    
    grouped.sort(key=lambda x: x['score'], reverse=True)
    
    или дополнить следующим образом, чтобы сортировал по id в случае одинаковых score
    
    grouped.sort(key=lambda x: (x['score'], x['id']), reverse=True)
  • Как связать телеграмм-бота с Инстаграм?

    @o5a
    Adeliame, как вы это себе представляете "связать телеграмм бота и аккаунт Инстаграма"?
    Вам самим придется в своем скрипте реализовать периодическую проверку постов аккаунта инстаграм и передачу их в чат телеграм.
    Для работы с инстаграм (по крайней мере получения постов) можно использовать модуль instaloader, там есть методы для получения постов.
    Т.е. периодически запускать через него (или еще какой подобный) проверку новых постов, получение их содержимого, и соответственно передачу в чат телеграм.