• Как отслеживать изменение даты файла с сайта?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Спарсить с помощью beautifulsoup4.
    Ответ написан
    Комментировать
  • ValueError: too many values to unpack (expected 2) почему?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Значит в message.text больше элементов, чем вы ожидаете.
    Ответ написан
  • Есть ли программа, сервис, модуль для Excel, Calc для копирования из электронной таблицы в SQL?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Knime.
    Бесплатно. Есть русское комьюнити. Есть интерфейсы к почти любым sql и nosql бд. Открывает и пишет xlsx, csv, всё вот это вот. Можешь делать с «колонками и строчками» что угодно.
    Есть куча аналолитических модулей, логика, циклы и всё такое. Есть возможность создавать вставки на java, js, python и т.п. Можно поднять сервак и выполнять удаленно. Можно десктоп приложение.

    Только надо влиться в процесс. Там несколько нетривиально всё, я например с третьего подхода фишку просёк.
    Ответ написан
    1 комментарий
  • Преобразование даты Python?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    # Timedelta function demonstration
    
    from datetime import datetime, timedelta
    
    
    # Using current time
    ini_time_for_now = datetime.now()
    
    # printing initial_date
    print ("initial_date", str(ini_time_for_now))
    
    # Calculating future dates
    # for two years
    future_date_after_2yrs = ini_time_for_now + \
    						timedelta(days = 730)
    
    future_date_after_2days = ini_time_for_now + \
    						timedelta(days = 2)
    
    # printing calculated future_dates
    print('future_date_after_2yrs:', str(future_date_after_2yrs))
    print('future_date_after_2days:', str(future_date_after_2days))
    Ответ написан
    Комментировать
  • Добрый день. Вопрос по Python связанный с вводом данных. Вводить число надо так чтобы программа принимала числа со знаками после запятой?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Давайте посмотрим на код вашей программы.
    a, b, c, d = map(int, input().split())

    Как вы думаете, что делает функция, выделенная жирным шрифтом?
    Ответ написан
    Комментировать
  • Как конвертировать числа в формат доллара?

    Vindicar
    @Vindicar
    RTFM!
    >>> import locale
    >>> locale.setlocale(0, 'en-us')
    'en-us'
    >>> locale.currency(123400/100)
    '$1234.00'
    >>> locale.currency(123400/100, grouping=True)
    '$1,234.00'
    >>>
    Ответ написан
    Комментировать
  • Как собрать и вывести общее количество строк в базе данных sqlite3?

    @denislysenko
    data engineer
    пример:
    #предположем, что количество строк в таблице равно 5000
    cursor.execute("select count(*) from login_id") # делаем запос на кол-во строк в таблице
    row_count = cursor.fetchone() # значит переменная row_count будет равна (5000) 
    print(row_count) #--> (5000) 
    # то есть, row_count равна кортежу, в котором первым елементоя является число
    
    #вывести значение 5000, можно просто сделав принт по нулевому индексу кортежа row_count
    #вот так:
    print(row_count[0]) #--> 5000
    Ответ написан
    2 комментария
  • Добавляю в sqlite3 через python в таблицу данные и выдает ошибку почему?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Элементарно, Ватсон!
    В области видимости переменных функции passw переменная loginDb - не определена, поэтому функция ищет такую переменную в вышележащей области видимости - в глобальной. А там эта переменная определена и ссылается на класс str (кстати, зачем???)
    В то же время в области видимости переменных функции auth переменная loginDb определена, поэтому она там не имеет никакого отношения ни к одноименной переменной в глобальной области, ни к одноименной переменной в функции passw.
    На вход execute попадает значение str - а это - класс, а не строка, поэтому execute и ругается, что тип не подходящий.

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

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Наверное, надо проверять элемент исходного списка, является ли он списком, и только тогда распаковывать?
    Если уровень вложенности у нас один, то так и написать
    chained = []
    for item in posl:
        if isinstance(item, list):
            for subitem in item:
                chained.append(subitem)
        else:
            chained.append(item)

    Это будет самый кондовый алгоритм. Задачу можно реализовать и короче, и оптимальнее. Но при изучении программирования надо сначала научиться составлять самому простейшие алгоритмы и их реализовывать, а не просто пытаться использовать по очереди какие-то магические заклинания - авось какое-то сработает. А если не сработает - то идти на Хабр, чтобы тебе его написали.
    Любой красивый код следует применять только тогда, когда ты понимаешь, как он работает, что делает внутри. А если не понимаешь, то лучше сначала разобраться, реализовать тот же алгоритм руками. Иначе ты будешь не программист, а обезьяна с гранатой.

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

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Обход рекурсией:
    posl = ['Один',  'Два',  'Три',  ['Четыре',  'Пять',  'Шесть', ['Семь', 'Восемь', ['Девять']] ], 'Десять']
    
    def unpack_list(somelist):
        res = []
        def to_flat(item):
            if isinstance(item, list):
                for im in item:
                    to_flat(im)
            else:
                res.append(item)
        return to_flat(somelist)
    
    print(unpack_list(posl))
    
    # ['Один', 'Два', 'Три', 'Четыре', 'Пять', 'Шесть', 'Семь', 'Восемь', 'Девять', 'Десять']
    Ответ написан
    Комментировать
  • Как перевести декартовые координаты в полярные и найти полярный угол?

    Vindicar
    @Vindicar
    RTFM!
    Тригонометрию в школе проходили?
    Есть прямоугольный треугольник. Одна точка - начало координат О, вторая - искомая точка в декартовых координатах A, третья - её проекция на ось X (назовем точка B).
    Тогда гипотенуза - это отрезок ОA, а катеты - OB и AB. Тебе нужно найти угол AOB.
    Вспоминаем определения:
    sin AOB = |AB| / |OA| =>
    cos AOB = |OB| / |OA|
    tg AOB = |AB| / |OB|

    Как найти длину гипотенузы OA ты уже знаешь.
    Длина AB будет координатой y, а длина OB - координатой x.
    Используй любое из указанный выражений для нахождения AOB, только не забывай про коррекцию знаков (так, cos AOB не изменится, если сменить знак координаты y, а вот знак угла при этом должен измениться).
    Ответ написан
    Комментировать
  • Как повысить свои скиллы в коде на Python?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    • Смотреть список зависимостей проекта и читать документацию по ним.
    • Читать документацию и комментарии к коду.
    • Пользоваться поисковиком
    • Ставить конкретные задачи и пытаться их реализовать.

    Все это по кругу и со временем все придет.
    Вещей из первых двух пунктов может не быть, но обычно, в нормальных репах оно есть.
    Хочу написать наконец что-то более менее нормальное, но не хочу говнокодить.

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

    amletixq
    @amletixq Автор вопроса
    Все оказалось намного проще. чем я думал.

    Я использовал второй вариант с условием, и дописал в части else:

    for index, letter in enumerate(letters.upper()):
        for number in range(2, len(names) + 2):
            splited_name = names[number - 2].split()
    
            if index == 7:
                if int(splited_name[index - 1]) > 150:
                    ws[f"{letter}{number}"] = "Призер"
                else:
                    ws[f"{letter}{number}"] = "Участник"
            else:
                if index >= 4 or index == 6:
                    ws[f"{letter}{number}"] = int(splited_name[index])


    По факту, у меня было определенное количество данных, и эти данные по своим позициям были фиксированными, то есть, например первый кусок был точно строкой, а с 4 по 6 были числами, так что мне нужно было выловить их в цикле и просто добавить их в таблицу, и не махиначить с исключениями.
    Ответ написан
    Комментировать
  • Помгите с ООП в Python?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Вам же даже ошибка говорит:
    module 'sql' has no attribute 'insert'

    К тому-же сравните:
    class Sql:
    c
    import sql
    Одним словом - проблема не в ООП, а в неправильной работе с модулями.
    Ответ написан
    5 комментариев
  • Как добавить много изображений в шаблон docx?

    @Diolorca Автор вопроса
    Решил проблему, все оказалось достаточно просто. Код следующий:

    from docxtpl import DocxTemplate,InlineImage
    import glob
    from docx.shared import Mm
    
     
    #берем документ 
    doc = DocxTemplate('3.docx')
     
    imageObjs = []
    for fPath in glob.glob('1/*.jpg'):
        print(fPath)
        imgObj = InlineImage(doc, fPath, height =Mm (65))
        imageObjs.append(imgObj)
        
        
    context = {
        "images": imageObjs
    
    
    }
    
    doc.render(context)
    doc.save("context.docx")


    При этом в docx вставляем:
    {%- for item in images -%}
    {{ item }}
    {%- endfor -%}
    Ответ написан
    Комментировать
  • Как заменить фразу в контенте кроме подписей внутри картинок?

    Догадываюсь, что нужно бы прописать регулярку
    Догадка объяснимая, но неверная, в конечном итоге.
    Для изменения произвольного HTML нельзя надёжно использовать регулярные выражения.
    Нужно использовать готовые парсеры, которые понимают разметку HTML и умеют обрабатывать ошибки, допущенные в ней (например, DOMDocument::loadHTML). И в итоговом дереве уже рекурсивно делать, что требуется.
    Ответ написан
    2 комментария
  • Как убрать последнее вхождение replace?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Точка в регулярном выражении – один из специальных символов – означает «любой 1 символ». Чтобы буквально обозначить обычную точку, надо её экранировать обратным слешем: \.

    В задаче, наверное, вовсе не нужны регулярки, тут же простая замена подстроки:
    const str = '1 августа 2022 г.';
    str.replace(' г.', '')  // "1 августа 2022"

    Если замен несколько, то вместо replace() использовать метод replaceAll()
    Ответ написан
    Комментировать
  • Почему не работает регулярное выражение?

    LaRN
    @LaRN
    Senior Developer
    Символ $ в регулярке означает, что вернется только последовательность на конце строки.
    Если его убрать то вернется:
    ['PH', 'UAE', 'RU']
    Ответ написан
    Комментировать
  • Почему не работает регулярное выражение?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Знак доллара в конце паттерна уберите.
    Ответ написан
    Комментировать
  • Ошибка table hod has 4 columns but 3 values were supplied?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    `id` INTENGER
    А что это за тип поля такой?
    И откуда уверенность что создастся корректно таблица после этого?
    Ответ написан
    Комментировать