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

    @abcd0x00
    >>> all_words = ['word1', 'word5', 'word7']
    >>> 
    >>> if {'word1', 'word2', 'word3'}.intersection(all_words):
    ...     print('yes')
    ... else:
    ...     print('no')
    ... 
    yes
    >>>
    Ответ написан
    Комментировать
  • Объясните регулярное выражение?

    @abcd0x00
    Прочитай документацию
    https://docs.python.org/3/library/re.html
    Ответ написан
    Комментировать
  • Как умножить каждый элемент массива с шагом n?

    @abcd0x00
    >>> def gen():
    ...     a, b = 2 ** 0.5, 2
    ...     while True:
    ...         yield a
    ...         yield b
    ...         a *= 2
    ...         b *= 2
    ... 
    >>> lst = [1] * 10
    >>> out = [i * j for i, j in zip(lst, gen())]
    >>> out
    [1.4142135623730951, 2, 2.8284271247461903, 4, 5.656854249492381, 8, 11.313708498984761, 16, 22.627416997969522, 32]
    >>>
    Ответ написан
    Комментировать
  • Как проверить есть в строке кириллица?

    @abcd0x00
    >>> def hascyr(s):
    ...     lower = set('абвгдеёжзийклмнопрстуфхцчшщъыьэюя')
    ...     return lower.intersection(s.lower()) != set()
    ... 
    >>> hascyr('abcd')
    False
    >>> hascyr('abcdБdefg')
    True
    >>>
    Ответ написан
    Комментировать
  • Как вывести элементы в список на питоне?

    @abcd0x00
    В третьем питоне:
    >>> a = ['1', '2', '3']
    >>> b = ['a', 'b', 'c']
    >>> c = ['x', 'y', 'z']
    >>> 
    >>> out = list(map(list, zip(a, b, c)))
    >>> out
    [['1', 'a', 'x'], ['2', 'b', 'y'], ['3', 'c', 'z']]
    >>>
    Ответ написан
    Комментировать
  • Новичок в программировании. Что мне изучать в Python для моих задач?

    @abcd0x00
    Мои задачи: писать просты скрипты для автоматизации работы:

    Надо обратить внимание на составление программы. То есть ты должен словесно описать все действия в программе ещё до её записи на питоне. Например, питон тебе никак не поможет определить, сколько и каких аргументов должно быть у функции, что она должна возвращать и чего не должна, что она должна делать и чего не должна. Кажущаяся простой программа может оказаться довольно сложной в этом плане.
    Примеры

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

    А если программисты изменят страницу? Как твой скрипт это поймёт? Допустим, он даже поймёт это и сообщит тебе, но тогда тебе придётся его менять, чтобы учесть новые условия. Чтобы его поменять в области распознавания страницы, эта часть должна быть хорошо изолирована от остальной программы, иначе скрипт придётся писать заново практически целиком. Время потратишь на переписывание скрипта, а страницу опять поменяют.

    И еще хочу самостоятельно для закрепления навыков сделать программу, которая будет при подключении плейера к компьютеру автоматически копировать музыку из указанной на компьютере папки в папку устройства.

    Если в середине копирования файла плейер вытащить и вставить обратно, что будет с этим файлом? Он останется недописанным? Его надо будет удалить, но как ты определишь, что не дописан именно этот файл из десятка скопированных?

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

    @abcd0x00
    Подскажите, возможно ли в событии прервать сразу несколько функций def 2 и def 1 и вернуть что-то (return)?

    Исключение можешь сделать (наследование), заполнить его нужными данными (метод) и породить через raise. А над f1 отловить через try и проверить данные (метод).
    Ответ написан
    Комментировать
  • Как в Python считать по кругу?

    @abcd0x00
    >>> import collections
    >>> 
    >>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> n = 5
    >>> 
    >>> deq = collections.deque(enumerate(lst))
    >>> 
    >>> while len(deq) > 1:
    ...     deq.rotate(-n)
    ...     print(deq.pop())
    ... 
    (4, 5)
    (0, 1)
    (6, 7)
    (3, 4)
    (2, 3)
    (5, 6)
    (8, 9)
    (1, 2)
    >>> print(deq)
    deque([(7, 8)])
    >>>
    Ответ написан
    Комментировать
  • Как включить слеш в регулярное выражение?

    @abcd0x00
    Хочу вот сюда [a-zA-Z0-9] включить слеш / .

    Какой смысл включать туда слеш?

    Слеш включается прямо, без всяких экранирований:
    >>> import re
    >>> 
    >>> re.findall(r'/', 'a/b/c/d')
    ['/', '/', '/']
    >>>

    >>> import re
    >>> 
    >>> re.findall(r'[ac/]', 'a/b/c/d')
    ['a', '/', '/', 'c', '/']
    >>>
    Ответ написан
    Комментировать
  • Как выводить русские символы в файл python?

    @abcd0x00
    import codecs
    import json
    
    with codecs.open('file.txt', 'w', encoding='utf-8') as fout:
        json.dump({u'абв': u'где'}, fout, ensure_ascii=False)


    [guest@localhost py]$ cat file.txt 
    {"абв": "где"}[guest@localhost py]$
    Ответ написан
    1 комментарий
  • С чего начать изучение MySQL для веб-проекта?

    @abcd0x00
    Ответ написан
    Комментировать
  • Python 3, UnicodeEncodeError, как исправить?

    @abcd0x00
    Скорее всего, там второй питон. Запускай скрипт через python3.
    Ответ написан
    Комментировать
  • Какой инструмент вывода конкретного кода ошибки из файла использовать?

    @abcd0x00
    Надо этот файл перевести в словарь

    Чтобы такая запись
    Код ошибки: 10
    "Ошибка в среде"
    http://site/topic/777
    http://site/topic/111


    Преобразовывалась в такую
    {10: ('Ошибка в среде', ['http://site/topic/777', 'http://site/topic/111'])}


    Пример
    >>> d = {10: ('Ошибка в среде',
    ...           ['http://site/topic/777', 'http://site/topic/111']),
    ...      37: ('Не удалось инициализировать драйвер этого устройства (Код 37)\n'
    ...           '(Операция не выполнена) Запрошенная операция не выполнена',
    ...           ['http://site/topic/555'])}
    >>> d[10]
    ('Ошибка в среде', ['http://site/topic/777', 'http://site/topic/111'])
    >>> d[37]
    ('Не удалось инициализировать драйвер этого устройства (Код 37)\n(Операция не выполнена) Запрошенная операция не выполнена', ['http://site/topic/555'])
    >>> 
    >>> print(d[37][0])
    Не удалось инициализировать драйвер этого устройства (Код 37)
    (Операция не выполнена) Запрошенная операция не выполнена
    >>>

    Ответ написан
    Комментировать
  • Как преобразовать маску в диапазон ip?

    @abcd0x00
    Ответ написан
    Комментировать
  • Как правильно решить задачу по поиску двух максимальных чисел в списке?

    @abcd0x00
    Находит два максимальных числа.
    >>> def f(seq):
    ...     m1 = m2 = None
    ...     for i in seq:
    ...         if m2 is None:
    ...             m2 = i
    ...         elif m1 is None:
    ...             if i > m2:
    ...                 m1, m2 = m2, i
    ...             else:
    ...                 m1 = i
    ...         elif i > m2:
    ...             m1, m2 = m2, i
    ...         elif i > m1:
    ...             m1 = i
    ...     return (m1, m2)
    ... 
    >>> a = [1, 2, 39, 4, 13, 4, 5, 6, 7, 3, 23, 2]
    >>> 
    >>> f(a)
    (23, 39)
    >>>
    Ответ написан
    2 комментария
  • Как удалить все нулевые элементы из словаря?

    @abcd0x00
    Нужно пройти его рекурсивно.
    >>> def f(d):
    ...     for i in set(d):
    ...         e = d[i]
    ...         if isinstance(e, dict):
    ...             f(e)
    ...         elif e == 0:
    ...             del d[i]
    ... 
    >>> d = {'user1': {'var1': 2,
    ...                'var2': 0,
    ...                'var3': 1,
    ...                'var4': 0},
    ...      'user2': {'var1': 0,
    ...                'var2': 1,
    ...                'var3': 0,
    ...                'var4': 0},
    ...      'user3': {'var1': 1,
    ...                'var2': 0,
    ...                'var3': 0,
    ...                'var4': 0}}
    >>> 
    >>> f(d)
    >>> d
    {'user3': {'var1': 1}, 'user2': {'var2': 1}, 'user1': {'var1': 2, 'var3': 1}}
    >>>
    Ответ написан
    2 комментария
  • Как с помощью рекурсии удалить последний элемент списка?

    @abcd0x00
    Как с помощью рекурсии удалить последний элемент списка?

    Нужно передавать в каждый вызов список, текущую позицию и длину списка. То есть рекурсия должна переводить текущую позицию вперёд, пока она не станет меньше длины на единицу.
    Ответ написан
  • Ошбка в модуле re raise error, v # invalid expression?

    @abcd0x00
    rx = r'\. %s (.+\n)+[}]'% clss

    Там есть re.escape() специально для таких случаев. То есть до подстановки нужно выполнить экранирование.

    Немного по коду

    Вообще, лучше перейти на третий питон, так как во втором всё хуже сделано. Даже те же регулярные выражения во втором питоне ищут по ASCII, а в третьем - по Unicode. Во втором нужно больше всяких телодвижений делать. Но самое главное, что они потом (эти знания), не используются, так как удалены из питона вообще. То есть учишь всё это зря.
    То есть иными словами, зачем тебе знать, что для поиска в Unicode нужно передавать флаг, если этот флаг, начиная с третьего питона, не используется вообще никогда? Время на изучение потратишь - а смысла в этом никакого нет. Лучше потратить время на что-то, что используется.
    По самому коду видно, что учить тебе ещё не переучить. И даже не питон, а сами парадигмы, чтобы не писать такие монолиты, привязанные к консоли. Завтра будет задание "написать то же самое, только чтобы выводило не на экран, а в файл, сеть или базу данных", и придётся тебе писать всё заново, потому что ты к консоли привязал всё изначально.
    Ответ написан
  • Можно ли использовать конструкцию with as на selenium?

    @abcd0x00
    Чтобы определить, можно ли использовать оператор with с объектом obj, нужно просто выполнить obj.__enter__.
    Если метод есть, то можно.

    Это пример:
    >>> f = open('/etc/passwd')
    >>> f.__enter__
    <built-in method __enter__ of _io.TextIOWrapper object at 0xb750e644>
    >>>
    Ответ написан
    Комментировать
  • Как правильно распарсить xml файл в Python?

    @abcd0x00
    Выбирает нужные события в документе.
    В нужных событиях выбирает нужные атрибуты.
    В нужных атрибутах выбирает нужный элемент.

    Код
    >>> import lxml.etree
    >>> 
    >>> text = """\
    ... <eventsList>
    ... <event>
    ...         <id>374648e7-0c33-403f-bec5-c580fcf9fc8b</id>
    ...         <date>2016-03-30T21:11:33.163+03:00</date>
    ...         <type>deletedPrintedItems</type>
    ...         <departmentId>3</departmentId>
    ...         <attribute>
    ...             <name>comment</name>
    ...             <value>sadasd</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>user</name>
    ...             <value>65d90cba-a421-4e4d-9d3e-14ddd6907280</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>openTime</name>
    ...             <value>Wed Mar 30 21:07:53 MSK 2016</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>tableNum</name>
    ...             <value>2</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>session</name>
    ...             <value>1.000000000</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>orderNum</name>
    ...             <value>4.000000000</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>reason</name>
    ...             <value>Со списанием</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>receiptsSum</name>
    ...             <value>0E-9</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>dishes</name>
    ...             <value>Салат Оливье</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>isBanquet</name>
    ...             <value>0E-9</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>withWriteoff</name>
    ...             <value>1.000000000</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>penalty</name>
    ...             <value>0E-9</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>rowCount</name>
    ...             <value>1.000000000</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>numGuests</name>
    ...             <value>4.000000000</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>auth</name>
    ...             <value>65d90cba-a421-4e4d-9d3e-14ddd6907280</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>orderSumAfterDiscount</name>
    ...             <value>0E-9</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>terminal</name>
    ...             <value>49c7d0ba-a469-517f-0153-61a7bcb29ccb</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>sum</name>
    ...             <value>70.000000000</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>method</name>
    ...             <value>Списание за счет заведения</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>orderId</name>
    ...             <value>e55c392f-ea8a-4c96-aecd-2bd0b6ffd2cd</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>waiter</name>
    ...             <value>5daf4283-ae8c-4a95-83e5-052fb4a33570</value>
    ...         </attribute>
    ...     </event>
    ...     <event>
    ...         <id>61d3cb56-74dd-4d20-86ae-217c37f15f01</id>
    ...         <date>2016-03-30T21:11:41.090+03:00</date>
    ...         <type>frontLogout</type>
    ...         <departmentId>3</departmentId>
    ...         <attribute>
    ...             <name>user</name>
    ...             <value>65d90cba-a421-4e4d-9d3e-14ddd6907280</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>session</name>
    ...             <value>1.000000000</value>
    ...         </attribute>
    ...         <attribute>
    ...             <name>terminal</name>
    ...             <value>49c7d0ba-a469-517f-0153-61a7bcb29ccb</value>
    ...         </attribute>
    ...     </event>
    ... </eventsList>
    ... """
    >>> 
    >>> doc = lxml.etree.fromstring(text)
    >>> events = doc.xpath(r'//event/type[text() = "deletedPrintedItems"]/..')
    >>> 
    >>> for event in events:
    ...     comments = event.xpath(r'.//attribute/name[text() = "comment"]'
    ...                            r'/../value/text()')
    ...     print(comments)
    ... 
    ['sadasd']
    >>>

    Ответ написан