• Как проверить строку на наличие любых символов кроме чисел?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    я так понимаю что в конце надо получить что-то вроде
    "23432+22342+564"
    на регулярке
    ^(\d+[+-]?)+[^+-]$
    \d+ - только числа 1 или более
    [+-]? - символ + или - 0 или 1 раз
    (\d+[+-]?)+ повторить это все 1 или более раз
    [^+-]$ - без символов +,- в конце строки

    итого
    import re
    
    while True:
        s = input("str = ").replace(' ','')
        if re.match(r'^(\d+[+-]?)+[^+-]$', s):
            print("OK {}".format(s))
            break
        else:
            print("Err {}".format(s))
    Ответ написан
  • Как преобразовать список в диапазон?

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

    то можно так
    t = ['2015', '2022']
    while(int(t[0])<=int(t[1])):
        print(t[0])
        t[0] = int(t[0]) + 1

    или с учетом существующего преобразования...
    t = [2015, 2022]
    while(t[0] <= t[1]):
        print(t[0])
        t[0] += 1
    Ответ написан
    Комментировать
  • Как просуммировать значения из списка типа "1+1"?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    побезобразничаем ...
    t = '4+5+3+2+3'
    print(sum(int(i) for x, i in enumerate(t) if not x % 2))

    #17

    или
    t = '4+5+3+2+3'
    print(sum(int(i) for i in list(t)[::2]))

    #17
    Ответ написан
    1 комментарий
  • Как пропустить итерацию цикла из вложенного цикла?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    Вот эта конструкция
    for skipLink in skipList:
             if tgLink[i] == skipLink:

    легко заменяется на
    if tgLink[i] in skipList:
    или
    if tgLink[i] not in skipList:
    ну и собственно добавь сюда внешний цикл по i
    и получишь результат... примерно такой
    tgLink = [2, 5, 6]
    skipList= [2]
    
    for i in range(len(tgLink)):
        if tgLink[i] not in skipList:
            print(tgLink[i])

    5
    6
    Ответ написан
    Комментировать
  • Как сократить/заменить списковое включение Python?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    Нечитабельно и сложно поддерживать - ты завтра уже забудешь что тут написано
    К тому же у тебя уже логические ошибки - неправильная группировка условия or / and - ты забыл поставить скобки

    Твой вариант
    txt = 'sdf s7878 adsf '
    trash_words = ['s7878']
    s = ' '.join([i for i in txt.split() if i.isupper() or i.isdigit() or [x.isdigit() for x in i].count(True) > 0 or [x.isupper() for x in i].count(True) >= 2 and i.lower() not in trash_words])
    print(s)

    выдает
    s7878
    а должен ничего не выдавать

    Правильно должно быть так
    s = ' '.join([i for i in txt.split() if (i.isupper() or i.isdigit() or [x.isdigit() for x in i].count(True) > 0 or [x.isupper() for x in i].count(True) >= 2) and i.lower() not in trash_words])


    Я бы сделал вот так
    def check_str(i):
        if ((i.isupper() or
            i.isdigit() or
            [x.isdigit() for x in i].count(True) > 0 or
            [x.isupper() for x in i].count(True) >= 2) and
            i.lower() not in trash_words):
            return True
        return False
    
    txt = 'sdf s7878 adsf '
    trash_words = []
    print(' '.join([i for i in txt.split() if check_str(i)]))
    Ответ написан
  • Как узнать индекс одного словаря из списка словарей?

    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 - где-то что-то было но это более сложная история
    Ответ написан
    Комментировать
  • Как правильно переносить параметры?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    pep8 в помощь
    оба способа не правильные, как по мне, хотя первый и не противоречит стандарту но при большом кол-ве параметров не читабельный
    с именованными параметрами мне ближе такой
    def func_name(
        var1=def_val1,
        var2=def_val2,
        varN=def_var3)
    Ответ написан
    Комментировать
  • Как обойти блокировку Cloudflare?

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

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

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

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

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