Ответы пользователя по тегу Python
  • Как на языку python сделать циклом определенное количество линий и увеличивать их длину?

    @PavelMos
    чтобы линии росли ? смотри графические библиотеки питон, например graphics или можно plotly. Там можно создавать элементы-линии. Библиотеки рисуют кадр, затем выводят его. Нужно будет перерисовывать кадр - удлинять линии на 1 пиксель
    Ответ написан
  • Что выводит(печатает) данный кусок программы?

    @PavelMos
    even берёт число и возвращает true/false сравнения с нулём остатка (оператор %) от деления аргумента на 2

    filter берёт список- аргумент l, и проверяет каждый элемент функцией even, если он чётный, добавляет его в список-результат. Аргумент p не используется, x=1.0 задавать не нужно тк это нигде не используется

    функции ничего не печатают, чтобы распечатать нужно print ( функция (аргумент...) )
    Ответ написан
    Комментировать
  • Как вывести нужные данные с XML файла Python скриптом?

    @PavelMos
    xpath ругается что файл некорректный, нужно вручную некоторые теги править. Если он таким образом всё время создаётся, хотя это странно, то проще использовать для разбора не xpath, а какой-то другой парсер вроде Beautiful Soup или регулярные выражения
    для адреса:
    addr=\"(([0-9]{1,3}[\\.]){3}[0-9]{1,3})\" #результат в группе 1, т.е. второй по счёту, т.к. первым элементом будет результат найденного по всему выражению, а не по его подгруппам
    a=re.search( addr_reg, text)[1]
    https://regex101.com/r/VylVkU/2
    для cpe
    osmatch\sname=\"(.?HP.+?)\".*\n.*(.+?)< #результат будет в группе 2, то есть третьей по счёту
    https://regex101.com/r/VylVkU/1

    import re
    f=open("....")
    text=f.read()
    addr='addr=\\"(([0-9]{1,3}[\\.]){3}[0-9]{1,3})"'
    a=re.search(addr, text)[1] #re.search выдает набор: весь  результат и подргуппы, нужна конкретная подгруппа, в которой адрес, аналогично со вторым re.search
    cpe="osmatch\sname=\"(.?HP.+?)\".*\n.*<cpe>(.+?)<"
    c=re.search(cpe, text)[2]
    print (a,c)
    45.33.49.119 cpe:/h:hp:p2000_g3
    Ответ написан
    2 комментария
  • Как добавить файл в bucket yandex cloud?

    @PavelMos
    Да, можно, если файл короткий. Длинные нужно размещать в облаке. Инструкции же есть в яндексе.

    import urllib.request
    import json
    import requests
    import time
    import pprint
    
    
    FOLDER_ID = "......." # Идентификатор каталога, даётся при регистрации на яндекс-платформе
    IAM_TOKEN = "..........." # IAM-токен, даётся при регистрации на яндекс-платформе
    
    path1="C:\\work\\"
    
    list1=('4.ogg', '9.ogg')
    
    def short_audio (list1, path1): #берёт ogg-файлы по списку list1, файлы лежат в директории path1
        for a in list1:
    
            with open(path1+a, "rb") as f:
                data = f.read()
    
            params = "&".join([
                "topic=general",
                "folderId=%s" % FOLDER_ID,
                "lang=ru-RU"
            ])
    
            print ("params=", params, "data",data)
            url = urllib.request.Request("https://stt.api.cloud.yandex.net/speech/v1/stt:recognize?%s" % params, data=data) #пересылает содержимое ogg
            url.add_header("Authorization", "Bearer %s" % IAM_TOKEN)
            print (url)
    
            responseData = urllib.request.urlopen(url).read().decode('UTF-8')
            decodedData = json.loads(responseData)
    
            if decodedData.get("error_code") is None:
                print(decodedData.get("result"))
        return
    
    short_audio(list1, path1)
    Ответ написан
    Комментировать
  • Как сделать вывод нескольких значений в таблицу SQIite3 and Python?

    @PavelMos
    Можно сделать несколько запросов, разобрать их (то есть обработать в скрипте Python) и скомпоновать в один результат.
    Можно сделать объединение результатов запросов по нескольким таблицам с помощью SQL JOIN, ключом будет telegram_id . На всякий случай см. инструкции к sqlite, могут быть небольшие отличия от синтаксиса sql
    ObDyr.png
    Ответ написан
    Комментировать
  • Python проверка наличия элемента в словаре, ошибка?

    @PavelMos
    values() уже вставлен и он должен выдать список значений (не ключей) словаря, только словарь тут, внутри функции, это аргумент collection - под таким именем словарь friends передаётся в функцию
    if city in collection.values():  # если есть среди значений словаря collection
    Ответ написан
    Комментировать
  • Как вставить переменную в JSON?

    @PavelMos
    JSON это словарь. В отличие от списка, куда добавлять можно только последующий элемент/ы через встроенные функции append/extend или через +=, в словарь можно добавлять/перезаписывать просто указанием ключа с путём от начала словаря и значения этого ключа.
    dict1['level1']['level2']['level3']=999
    Ответ написан
    Комментировать
  • Как из базы данных SQLite вытащить переменную?

    @PavelMos
    test_int INT тут не переменная, а название столбца в таблице test, где хранятся записи типа int. Пока в нём ничего не записано.
    Ответ написан
    Комментировать
  • Отсортировать list со второго подмассива по последующие?

    @PavelMos
    Без шапки значит без нулевой строки
    data[1:].sort........
    только шапку потом придётся обратно приделывать

    но проще всего через pandas сделать
    import pandas as pd
    p1=pd.read_csv('c:\\work\\csv1.csv', sep=';') #кодировка по умолчанию utf8, названия столбцов в  строке 0
    p1.sort_values(by=['col1','col2','col3'], ascending=False) #можно задавать несколько столбцов, но вверх или вниз применяется только ко всем вместе, т.е. для того, чтобы было в разные стороны, нужно будет 2 раза сортировку делать
    Ответ написан
  • Как найти самое короткое слово в словаре в python?

    @PavelMos
    Почитай про питоновские словари.
    Перебрать ключи - просто в обходе, например, for x in dict1..
    Перебрать значения - с помощью встроенной функции, for x in dict1.values()
    Найти минимум из ключей - просто min(dict1), т.е. функция будет искать среди ключей, а не значений. Соответственно, потом нужно взять значение по имени ключа.
    Всё вместе:
    min1=[min(dict1)] #ключ с минимальным значением
    print (min1, dict1[min1]) # распечатать ключ  и значение)
    Ответ написан
    5 комментариев
  • Как избавиться от AttributeError: module 'mmap' has no attribute 'PROT_READ' при попытке установить pip на Windows 10?

    @PavelMos
    Если не работает пип, должен быть в комплекте easy-install в директории scripts вроде. Синтаксис у них аналогичный. Или поставить 3.6 например.
    Ответ написан
    Комментировать
  • Как создать ярлык запуска скрипта python?

    @PavelMos
    Создать bat (если это в windows) который будет выполнять команду вроде c:\py\python.exe myscript.py и сделать ярлык для bat.
    Ответ написан
  • Сделал парсер, выдает 2 ошибки?

    @PavelMos
    А поразмыслить над ошибкой логически ? В Питоне всё, все переменные, функции - объекты. У объектов есть встроенные атрибуты, например, у строки это строковые функции. BS в работе создаёт и использует свои объекты и они также имеют свои функции, например, этот find. Но если предыдущее действие (например, функция), ничего не вернула (по каким-то причинам), и получился объект типа NoneType, может ли он иметь же встроенные атрибуты, что и нормальный объект BS ? Значит, нужно разобраться, почему создаётся объект NoneType , к которому в строке 25 применяется встроенная функция find.

    Если закомментировать title и foto, в которых проблема, то всё работает:
    [{'cena': '\n    \t                2\xa0345\xa0000\xa0руб.\n    \t            ',
      'link': 'https://irr.ru/cars/passenger/used/lexus-lx-570-vnedorozhnik-2011-g-v-probeg-117000-km-avtomat-5-7-l-advert740313755.html'},
     {'cena': '\n    \t                1\xa0200\xa0000\xa0руб.\n    \t            ',
      'link': 'https://irr.ru/cars/passenger/used/lexus-gx-470-vnedorozhnik-2004-g-v-probeg-133569-km-avtomat-4-7-l-advert750625481.html'},
     {'cena': '\n    \t                1\xa0320\xa0000\xa0руб.\n    \t            ',
      'link': 'https://irr.ru/cars/passenger/used/lexus-rx-270-vnedorozhnik-2011-g-v-probeg-115000-km-avtomat-advert749088541.html'},
     {'cena': '\n    \t                1\xa0500\xa0000\xa0руб.\n    \t            ',
      'link': 'https://irr.ru/cars/passenger/used/lexus-gs-250-sedan-2013-g-v-probeg-142145-km-avtomat-2-5-l-advert753188137.html'},
     {'cena': '\n    \t                1\xa0839\xa0999\xa0руб.\n    \t            ',
      'link': 'https://irr.ru/cars/passenger/used/lexus-lx-570-vnedorozhnik-2008-g-v-probeg-265000-km-avtomat-5-7-l-advert752860724.html'},
     {'cena': '\n    \t                845\xa0000\xa0руб.\n    \t            ',
      'link': 'https://irr.ru/cars/passenger/used/lexus-rx-350-vnedorozhnik-2006-g-v-probeg-196000-km-avtomat-3-5-l-advert752339702.html'},
     {'cena': '\n    \t                1\xa0400\xa0000\xa0руб.\n    \t            ',
      'link': 'https://irr.ru/cars/passenger/used/lexus-ls-460-sedan-2012-g-v-probeg-390000-km-avtomat-advert744369992.html'},
     {'cena': '\n    \t                3\xa0900\xa0000\xa0руб.\n    \t            ',
      'link': 'https://irr.ru/cars/passenger/used/lexus-lx-limuzin-2010-g-v-probeg-44000-km-avtomat-advert699227821.html'},
     {'cena': '\n    \t                3\xa0400\xa0000\xa0руб.\n    \t            ',
      'link': 'https://irr.ru/cars/passenger/used/lexus-lx-570-vnedorozhnik-2013-g-v-probeg-75000-km-avtomat-advert753194033.html'}]
    Ответ написан
    Комментировать
  • Есть ли библиотеки Python для считывания всего текста из Excel документа??

    @PavelMos
    Из экселя считывается не текст, а ячейки. Все листы экселя можно за раз считать, например, pandas.read_excel(.. и потом перебрать листы.
    https://pandas.pydata.org/pandas-docs/stable/refer...
    Но есть много нюансов как будут обрабатываться объединённые ячейки
    Ответ написан
    Комментировать
  • Как спарсить файл .doc python?

    @PavelMos
    Можно регулярными выражениями. Выражение ищет фразу от diff до цифрвой комбинации до первого "doc"
    https://regex101.com/r/XLJ1t4/1
    import re
    import urllib
    regexp1='(\/diff\/\d{1,2}-\d{1,2}.?doc)'
    f=urllib.request.urlopen('http://1311.ru/info/info.php') #открывает, возвращает объект http (не текст)
    b=f.read() #читает из него в bytes
    text=b.decode() #из bytes в utf-8 (кодировка по умолчанию, поэтому в аргументах декод можно не писать) переводит в текст
    out=re.findall(regexp1, text)
    #далее, зная адрес сайта
    for i in out:
       print ("http://1311.ru"+i)
    http://1311.ru/diff/16-09.doc
    http://1311.ru/diff/17-09.doc

    Но тут, вероятно, надо брать самое новое расписание, тогда их надо сортировать по датам, разделяя дату и месяц, или проверять каким-то образом дату файла на сервере
    Ответ написан
    2 комментария
  • Пройтись по многомерному массиву очередно?

    @PavelMos
    Через остаток от деления
    0%3, 1%3, 2%3, 3%3, 4%3, 5%3
    Out[79]: (0, 1, 2, 0, 1, 2)


    for i in range(len(comp)*len(comp[0])): #число всего элементов в 2-мерном массиве
        print (i%3)
        
    0
    1
    2
    0
    1
    2
    Ответ написан
    Комментировать
  • Как работает магический метод __hаsh__ в питоне при создании словаря?

    @PavelMos
    Имхо навряд ли это с ним связано потому что при списке всё ок. Со словарём может быть проблема если последующий ключ равен предыдущему, тогда он его перезаписывает.
    [(user.email,user.name) for user in (jane, joe)]
    Out[26]: [('jdoe@example.com', 'Jane Doe'), ('jdoe@example.com', 'Joe Doe')]
    [(user,user.name) for user in (jane, joe)]
    Out[33]: 
    [(<__main__.User at 0x1614587a390>, 'Jane Doe'),
     (<__main__.User at 0x1614587a1d0>, 'Joe Doe')]

    UPD
    но
    {joe:joe.name, jane:jane.name}
    Out[46]: {<__main__.User at 0x1614587a1d0>: 'Jane Doe'}
    Ответ написан
    4 комментария
  • Почему не сохраняются значения из цикла?

    @PavelMos
    Потому что это не цикл перебора индекса списка с шагом (for i in range.....), а цикла перебора самих элементов списка, где в i записывается очередной элемент
    Ответ написан
    Комментировать
  • Как сделать проверку в БД значений и по этим значениям сделать вывод пользователю?

    @PavelMos
    Как сделать проверку через IF/ELSE или другим оператором(может CASE)
    Зачем нужно сравнение в SQL если выбор номера группы происходит в питоне? Если это про питон, то в нём нет case, вместо него if..elif..elif..else
    result = cursor.fetchall()
    for x in result :
        if x == (2222,): # зачем запись (2222,) ?  Это тупла (неизменяемый список) из одного элемента, он не равен числу 2222
            print(x)
        else:
            print ("ops")
    Ответ написан
    Комментировать
  • Перекодировка в Python, как кратко записать?

    @PavelMos
    decode есть встроенная функция, но она не для строки, а для типа bytes, поэтому в начале нужно указать b'

    b'\xd0\x94\xd0\xb0, \xd0\xbf\xd1\x82\xd0\xb8\xd1\x86\xd1\x8b \xd0\xbe\xd0\xbf\xd0\xb0\xd1\x81\xd0\xbd\xd1\x8b "'.decode()
    Out[106]: 'Да, птицы опасны "'

    по умолчанию тут похоже utf-8, поэтому параметры в скобках можно не писать.
    Ответ написан
    Комментировать