Задать вопрос
  • Как создать словарь со списком машин без повторений?

    @PavelMos
    fst_part = get_service_name(vm['name']) 
    # получили имя машины ,которое потом надо проверять по нахождению в узле с номером. 
    #Идём дальше, перебираем ноды
    for i in nodes : #перебираются ключи - 1,2,3...
        if first_part not in [x.split('-')[0] for x in nodes[i].keys()]: # в примере в nodes[1] 
    #находится словарь, у которого в свою очередь есть ключи
    # aff-java-7.node.eu.consul"  
    # aff-java-9.node.eu.consul,  
    # tgbot-go-7.node.eu.consul....
    #Получаем список этих ключей - nodes[i].keys().  
    #Далее берем из них первую часть [x.split('-')[0] for x in nodes[i].keys()].
    #Далее проверка  if first_part not in [x.split('-')[0] for x in nodes[i].keys()]
            nodes[i][first_part]=vm_res #добавляет в  nodes во вложенный словарь в nodes[i] запись например 
            #{ "aff-java-7.node.eu.consul": {  "1st_part_name:": "aff",....
  • Как создать словарь со списком машин без повторений?

    @PavelMos
    DrPalmer,
    еще -

    fst_part = get_service_name(vm['name'])
            vm_res = {'1st_part_name:' : fst_part,'os:' : vm['distribution']['description'],'memory:' : vm['memory'],'cpu:' : vm['cpu'],'cpuNumber:' : vm['cpuNumber'],'disk:' : vm['disk']}
            for num in nodes:
                if fst_part in vm_res:


    fst_part in vm_res проверяет на нахождение в ключах словаря vm_res и совпадений тут не будет.
  • Как создать словарь со списком машин без повторений?

    @PavelMos
    DrPalmer, сделать так же, как делал бы человек по алгоритму
    1. смотреть текущий номер машины в цикле (номера расположены по порядку, хотя словарь, в общем случае, сам по себе не предполагает упорядочивания, и это также зависит от версии питона), например, 1
    2. взять первую часть сокращенного названия текущей машины в цикле, например, aff
    3. проверить, есть ли в словаре по ключу "1" элемент-вложеный словарь (он в данной схеме состоит из одного элемента), которого будет ключ (в dict.keys() будет 1 элемент, но это всё равно будет итерируемая последовательность), который начинается с этих трёх букв
    то есть
    re.match(r'aff', list(d1.keys())[0])  #True в случае совпадение

    если будет, пропустить цикл перебора в nodes и перейти на следующий номер в нём
  • Как найти путь к значению?

    @PavelMos
    В примере 1 открывайющий NSO Inspection и два закрывающих .
    Это правильный xml ?
  • Ошибка при запуске бота для discord на python, как решить?

    @PavelMos
    slemsik, не за что, это же тупо поиск на "RuntimeError: Event loop is closed", в первых ссылках описание проблемы и варианты решения
  • Ошибка при запуске бота для discord на python, как решить?

    @PavelMos
    в самое начало
    import asyncio
    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
  • Как получить текст из div с помощью bs4?

    @PavelMos
    hades432, сам хтмл нормально передаётся в бс ? Запрос с заголовками ?

    url1='https://bscscan.com/tx/0x25ad28fc0b91fd6144051333bfdb128a15b06cf64a9b612b665f95ba97964314'
    headers = {
        "accept": "*/*",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.134 YaBrowser/22.7.0.1842 Yowser/2.5 Safari/537.36"
    }
    r1=requests.get(url1, headers=headers)
    s1=BeautifulSoup(r1.content, "html_parser")
    result=s1.find('div', id='ContentPlaceHolder1_divTimeStamp')
    result1
    Out[82]: 
    <div id="ContentPlaceHolder1_divTimeStamp">
    <hr class="hr-space"/>
    <div class="row align-items-center">
    <div class="col-md-3 font-weight-bold font-weight-sm-normal mb-1 mb-md-0"><i class="fal fa-question-circle text-secondary d-none d-sm-inline-block mr-1" data-container="body" data-content="The date and time at which a transaction is validated." data-original-title="" data-placement="top" data-toggle="popover" title=""></i>Timestamp:</div>
    <div class="col-md-9">
    <span id="clock"></span><i class="far fa-clock small mr-1"></i>5 mins ago (Aug-27-2022 02:40:30 PM +UTC)
    </div>
    </div>
    </div>
    result1.text
    Out[83]: '\n\n\nTimestamp:\n\n5 mins ago (Aug-27-2022 02:40:30 PM +UTC)\n\n\n'
  • Как найти ближайшее меньшее к моему числу из заданных чисел?

    @PavelMos
    dmshar, верно, надо было сделать условие меньше/больше или равно, а еще предусмотреть вариант, что y равен самому маленькому числу в списке. Но основная мысль что проверка перебором пишется проще всего, или, как написали, можно сделать ее и без предварительной сортировки списка, т.е. сразу начать перебирать

    x = [2**0, 2**1, 2**2, 2**3, 2**4, 2**5, 2**6, 2**7, 2**8, 2**9, 2**10]
    for i in range (0,len(x)): 
        if y<=x[i]:
            print (x[i-1],y)
            break
  • Как объект с типом 'list' отображаемый в виде столбца преобразовать в строку?

    @PavelMos
    В данный момент эта часть скрипта не имеет смысла, потому что одной строкой создается пустой словарь
    data_list=[], а следующей в нем начинается перебор содержимого, которого в нём нет.

    data_list=[] #тут объявлется список, куда потом будет что-то добавляться. Сейчас он пустой
    for e in data_list: #тут начинается перебор списка,  переменная-итератор, 
    #то есть то, что будет двигаться по элементам итерируемого (перебираемого) объекта 
    #(в данном случае списка) названа "e"
       if type(e) is data_list: #бессмысленно
          data_list +=e # добавление к перебираемому списку переменной-итератора приведет
    # к тому,  что на каждом шаге список будет увеличиваться и проход никогда не закончится, 
    #или случится что-нибудь еще непредсказуемое
       else:
         data_list.append(e) #тоже само - к перебираемому списку добавляется переменная-итератор
    data_list += columns[1].text # здесь вероятно, написано то, что нужно - 
    #к списку добавляется текст из ячейки таблицы. Именно это и должно быть в цикле


    Если нужно распечатать в строку через пробел, то :

    import requests
    from bs4 import BeautifulSoup
    from lxml import html
    import csv
    headers = {'Accept': 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
               'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36 Edg/104.0.1293.63'}
    url = 'https://old.baltbet.ru/BetInfoSE.aspx?id=688978285'
    response = requests.get(url, headers=headers)
    file = open('data.csv','w')
    writer = csv.writer(file)
    soup = BeautifulSoup(response.text, 'html.parser')
    rows = soup.find('table',class_ ='betinfo2').find_all('tr')
    data_list=[] #создаётся список для записи результата
    for row in rows: #начинается перебор строк в rows, хотя на самом деле не строк , 
    #а пар тегов первого уровня, #в данном случае это теги <tr> </tr>. 
    #Переменная-итератор названа row, но можно было бы назвать её и по другому, это неважно
        columns = row.find_all('td') #в каждой row ищутся теги <td> , результат сохраняется в columns
        try: #неизвестно, есть ли в очередном row такой тег или нет, поэтому конструкция try - except
            data_list += columns[1].text #если есть, к data_list добавляется результат - 
    #текст внутри текущей пары тегов td
        except Exception as e: #обработка ошибки
            print ('ERR: ',e,row)
    print (' '.join(data_list)) #превращение списка data_list в строку, где элементы разделены пробелами


    Без изучения основ языка будешь постоянно запинаться в самых простых вещах.
  • Как объект с типом 'list' отображаемый в виде столбца преобразовать в строку?

    @PavelMos
    dasha1996,
    data_list=[]
    for e in data_list:

    Ты создаешь пустой список и начинаешь его перебирать.

    if type(e) is data_list:
    Ты сравниваешь итератор с итерируемым объектом. Зачем ?
    И "IS" это даже не "равно", это специальная функция.
    https://qna.habr.com/q/346640

    ВАЖНО - я выше ошибся, для списков: spisok+=element эквивалентно spisok.extend(element) то есть элемент, который сам должен быть списком, точнее, итерируемым (перебираемым) объектом, присоединяется к концу spisok и удлиняет его (extend - это удлинить). Т.е. если к списку [1,2,3] сделать extend ([4,5]) то будет [1,2,3,4,5]. А spisok.append(element) - элементом может быть объект данных любого типа, и он будет добавлен к списку как отдельный элемент. И если element это список, то он добавится отдельным списком.

    r=[1,2,3]
    r.append([4,5])
    r
    Out[16]: [1, 2, 3, [4, 5]]


    В общем, читай подробнее про работу со списками, работа с типами данных это основа любого языка
  • При парсинге таблицы выдает ошибку 'NoneType' object has no attribute 'find'. Как решить?

    @PavelMos
    dasha1996,
    приведи еще раз полный текст того, что запускаешь.

    for row in rows:
        columns = row.find_all('td')
        try:
            data_list = [columns[1].text]
            print(data_list, 'row: ', row, 'col:',columns)
        except Exception as e:
            print (e,row)
            
    list index out of range <tr>
    <th><strong>№</strong></th>
    <th><strong>Исход</strong></th>
    <th><strong>Результат</strong></th>
    </tr>
    ['2'] row:  <tr><td>16161325</td><td>2</td><td>Не завершено</td></tr> col: [<td>16161325</td>, <td>2</td>, <td>Не завершено</td>]
    ['X'] row:  <tr><td>16161327</td><td>X</td><td>Не завершено</td></tr> col: [<td>16161327</td>, <td>X</td>, <td>Не завершено</td>]
    ['1'] row:  <tr><td>16161329</td><td>1</td><td>Не завершено</td></tr> col: [<td>16161329</td>, <td>1</td>, <td>Не завершено</td>]
    ['X'] row:  <tr><td>16163706</td><td>X</td><td>Не завершено</td></tr> col: [<td>16163706</td>, <td>X</td>, <td>Не завершено</td>]
    ['X'] row:  <tr><td>16163953</td><td>X</td><td>Не завершено</td></tr> col: [<td>16163953</td>, <td>X</td>, <td>Не завершено</td>]
    ['1'] row:  <tr><td>16164574</td><td>1</td><td>Не завершено</td></tr> col: [<td>16164574</td>, <td>1</td>, <td>Не завершено</td>]
    ['X'] row:  <tr><td>16164578</td><td>X</td><td>Не завершено</td></tr> col: [<td>16164578</td>, <td>X</td>, <td>Не завершено</td>]
    ['X'] row:  <tr><td>16164580</td><td>X</td><td>Не завершено</td></tr> col: [<td>16164580</td>, <td>X</td>, <td>Не завершено</td>]
    ['2'] row:  <tr><td>16164583</td><td>2</td><td>Не завершено</td></tr> col: [<td>16164583</td>, <td>2</td>, <td>Не завершено</td>]
    ['X'] row:  <tr><td>16164589</td><td>X</td><td>Не завершено</td></tr> col: [<td>16164589</td>, <td>X</td>, <td>Не завершено</td>]
  • Как записать файл в папке?

    @PavelMos
    DedIsDead, ошибся, давно в линуксе не сидел
  • При парсинге таблицы выдает ошибку 'NoneType' object has no attribute 'find'. Как решить?

    @PavelMos
    dasha1996,
    for coloum in columns:
            data_list = [columns[1].text] #зачем переборка, если в цикле обращение не к итератору coloum, а к перебираемым columns ? 
            print(data_list)


    for row in rows перебирает строки, т.е. row это строка (состоящая из нескольких тд). Далее перебирать эти тд не нужно, если известен индекс.
    А ошибка с out of range из-за того, что в первой строке таблицы td нет. Поэтому надо обработку предусмотреть. И это можно было увидеть, распечатав rows

    for row in rows:
        columns = row.find_all('td')
        try:
            data_list = [columns[1].text]
        except Exception as e:
            print (e)
        print(data_list)
  • При парсинге таблицы выдает ошибку 'NoneType' object has no attribute 'find'. Как решить?

    @PavelMos
    dasha1996, выдаёт последнюю строку возможно из-за того что columns где-то в цикле не дополняется, а перезаписывается и там остаётся только последнее. Ты columns в самом цикле распечатываешь или после ?
    Вообще нужно смотреть весь текст, чтобы понять, в чём проблема.
  • Как сделать задержку на открытию ссылки в python?

    @PavelMos
    Что такое ссылка в питоне ?
    А вообще есть модуль time
    import time
    time.sleep(3) #секунды
  • Не работает BeautifulSoup?

    @PavelMos
    teddysto, lxml не устанавливается ?
  • Не работает BeautifulSoup?

    @PavelMos
    teddysto, он в папке site-packages после переустановки появляется ?
    из консоли команда import bs4 проходит ?
  • Как исправить ошибку в запросе requests?

    @PavelMos
    Борис Алексеев, так чего гадать, напиши прямо сейчас им в поддержку. Возможно, ответят быстрее, чем ты найдешь подсказку тут или на другом форуме.