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

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    ИМХО каждый раз гонять список перебором как-то не комильфо
    Если ключи уникальные то скорее всего не правильная структура данных

    Перегнать один раз
    a = [{"one": 10}, {"two": 20}, {"three": 30}]
    n = dict()
    for i in a:
        n.update(i)

    и
    print(n["two"])
    Ответ написан
    Комментировать
  • Почему у меня не работает условие?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    Потому что у тебя ерунда написала
    nums = [{'num': 1, 'num': 2, 'num': 3]
    У тебя список содержит словарь который содержит элементы с одинаковыми ключами
    Ответ написан
    Комментировать
  • Возвести элементы в списке в степень равную индексу элемента +1?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    Задача не корректно поставлена

    Каждый элемент в степень согласно позиции в глобальном списке
    for index, i in enumerate(range(100), start=1):
        print(i**index)


    Каждое число каждого элемента согласно позиции в глобальном списке
    p = list()
    for index, i in enumerate(range(100), start=1):
        k = list()
        for j in (str(i)):
            k.append(int(j)**index)
        p.append(k)
    print(p)


    Каждое число каждого элемента согласно позиции в локальном списке
    p = list()
    for i in range(100):
        k = list()
        for index, j in enumerate(str(i), start=1):
            k.append(int(j) ** index)
        p.append(k)
    print(p)
    Ответ написан
    Комментировать
  • Как перенести все нули в списке в конец?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    a1 = [6, 3, 0, 0, 0, 4, 8]
    a2 = sorted(a1, key=lambda x: not x)

    [6, 3, 0, 0, 0, 4, 8]
    [6, 3, 4, 8, 0, 0, 0]
    Ответ написан
    1 комментарий
  • Как n-ое количество элементов списка превратить в n-ое количество строк?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    Вам же дан пример как данные получить
    Там же и формируйте необходимый формат представления

    soup = BeautifulSoup(file, 'html.parser')
    blocks = soup.find_all('div', {'class': 'thumbnail offer'})
    
    items = []
    
    for block in blocks:
        item = []
        infos = block.h2.string.split(" ")
        for info in infos:
            if info and info != "vin:":
                item.append(info)
        for p in block.find_all('p'):
            name, value = p.get_text().split(":")
            item.append(value.strip())
        items.append(item)
    
    print(items)


    [['Tesla', 'Model', 'Y', 'Long', 'Range', '2021', 'White', 'DUAL', '5YJYGDEE0MF160719', 'IAAI', '31992305', 'Stationary', 'Front End', '18388\xa0миль\xa0(Actual)', '09.02.2022'], ['Nissan', 'Leaf', 'S', '2013', 'Black', '80KW', '1N4AZ0CP9DC412799', 'IAAI', '32170717', 'Stationary', 'Mechanical', '0\xa0миль\xa0(Inoperable)', '08.02.2022'], ['Tesla', 'Model', 'S', '75D/100D/P100D', '2018', 'Black', 'U', '5YJSA1E2XJF281636', 'IAAI', '32362715', 'Stationary', 'Undercarriage', '48907\xa0миль\xa0(Actual)', '08.02.2022'], ['Tesla', 'Model', 'Y', 'Long', 'Range', '2021', 'Black', 'DUAL', '5YJYGAEE0MF293902', 'IAAI', '32286033', 'Stationary', 'Rear', '1364\xa0мили\xa0(Actual)', '08.02.2022'], ['Tesla', 'Model', '3', 'Range', 'Battery', '2018', 'Gray', 'MOTOR', '5YJ3E1EA1JF042556', 'IAAI', '32275149', 'Starts', 'Front End', '56236\xa0миль\xa0(Actual)', '08.02.2022'], ['Tesla', 'Model', '3', 'Range', 'Battery', '2018', 'White', 'MOTOR', '5YJ3E1EA7JF060592', 'IAAI', '32059234', 'Run and Drive', 'Rear', '43562\xa0мили\xa0(Actual)', '08.02.2022'], ['Mclaren', '570S', '2018', 'Yellow', '3.8L', 'SBM13FAA6JW005327', 'IAAI', '32102602', 'Run and Drive', 'Undercarriage', '19014\xa0миль\xa0(Actual)', '08.02.2022'], ['Ferrari', '458', 'Italia', 'Spider', '2015', 'Red', '4.5L', 'ZFF68NHA2F0209408', 'IAAI', '31755225', 'Stationary', 'Front End', '3270\xa0миль\xa0(Actual)', '08.02.2022'], ['Mclaren', '570S', '2018', 'Silver', '3.8L', 'SBM13FAA8JW005569', 'IAAI', '31615301', 'Stationary', 'Flood', '4677\xa0миль\xa0(Actual)', '08.02.2022'], ['Lamborghini', 'Huracan', '2017', 'Yellow', '5.2L', '10', 'ZHWUC2ZF7HLA05910', 'Copart', '66999041', 'Enhanced Vehicles', 'All Over', '0\xa0миль\xa0(Not Actual)', '07.02.2022'], ['Mclaren', 'Automotive', '600Lt', '2019', 'Orange', '3.8L', '8', 'SBM13RAAXKW007150', 'Copart', '65542851', 'Enhanced Vehicles', 'Top/Roof', '0\xa0миль\xa0(Not Actual)', '07.02.2022'], ['Ferrari', 'California', '2010', 'Red', '4.3L', 'ZFF65LJA5A0169518', 'IAAI', '32362410', 'Run and Drive', 'Right Rear', '49854\xa0мили\xa0(Actual)', '07.02.2022']]
    Ответ написан
    Комментировать
  • Как перевести кирилицу в латынь с учетом регистра?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    Так работает эта функция
    def slugify(value, allow_unicode=False):
        """
        Convert to ASCII if 'allow_unicode' is False. Convert spaces to hyphens.
        Remove characters that aren't alphanumerics, underscores, or hyphens.
        Convert to lowercase. Also strip leading and trailing whitespace.
        """


    Не вижу проблем сделать первую букву большой средствами python, например
    print(slugify(my_str).title())
    Ответ написан
  • Как отформатировать данные которые получены с помощью парсера?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    Зачем html2text я так и не понял. В BS есть все что нужно
    Вот пример получение необходимой информации. Остальное при необходимости напильником подгоняется

    soup = BeautifulSoup(file, 'html.parser')
    blocks = soup.find_all('div', {'class': 'thumbnail offer'})
    
    for block in blocks:
        infos = block.h2.string.split(" ")
        for info in infos:
            if info and info != "vin:":
                print(info)
        for p in block.find_all('p'):
            name, value = p.get_text().split(":")
            print(value.strip())


    Результат
    Mclaren
    Automotive
    600Lt
    2019
    Orange
    3.8L
    8
    SBM13RAAXKW007150
    Copart
    65542851
    Enhanced Vehicles
    Top/Roof
    0 миль (Not Actual)
    07.02.2022
    Ответ написан
    Комментировать
  • Как сделать проверку переменной на несколько вариантов?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    Можно и без if/elif
    sp = [ "0", "арбуз", "1", "тарелка", "2", "ложка", "2",  "кружка", "0", "лопата"]
    for i in range(len(sp)):
        try:
            sp[i] = str(int(sp[i])+1)
        except:
            pass
    print(sp)


    Если с if / elif то как-то так
    sp = [ "0", "арбуз", "1", "тарелка", "2", "ложка", "2",  "кружка", "0", "лопата"]
    for i in range(len(sp)):
        if sp[i] == "0":
            sp[i] = "1"
        elif sp[i] == "1":
            sp[i] = "2"
        elif sp[i] == "2":
            sp[i] = "3"
    print(sp)
    Ответ написан
    Комментировать
  • Как получить пользователей из телеграмм канала?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    Bot API - никак
    Telegram API - где-то что-то было но это более сложная история
    Ответ написан
    Комментировать
  • Как обойти блокировку Cloudflare?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    все можно так или иначе подделать или сымитировать но requests не поддерживает javascript и на этом летять все парсеры

    если это единичный сервис доступ к которому вам нужен то есть вариант например с selenium
    да медленно, да глючно но опять же при правильной постановке вопроса должную автоматизацию вы получите.

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

    есть комбинированный вариант с определенной задержкой актуальной информации. например, в несколько часов а не по запросу

    если таких сервисов для пирсинга много то вышеописанный комбинированный вариант возможен но в геометрической прогрессии возрастает время и повышается глючность механизма в целом
    Ответ написан