TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #65 · 8 апр.

Небольшой трик с регулярными выражениями который редко вижу в чужом коде. Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста. >>> text = ''' >>> Alex:8999123456 >>> Mike:+799987654 >>> Oleg:+344456789 >>> ''' Соответственно, для выделения нужных элементов будем использовать группы. Получится такой паттерн: (\w+):([\d+]+) Как мы будем формировать словарь из найденных групп? >>> import re >>> results = [] >>> for match in re.finditer(r"(\w+):([\d+]+)", text): >>> results.append({ >>> "name": match.group(1), >>> "phone": match.group(2) >>> }) >>> print(results) [{'name': 'Alex', 'phone': '8999123456'}, ...] Можно немного сократить запись используя zip >>> results = [] >>> for match in re.finditer(r"(\w+):([\d+]+)", text): >>> results.append(dict(zip(['name', 'phone'], match.groups()))) Но есть способ лучше! Это именованные группы в regex. Можно в паттерне указать имя группы и результат сразу забрать в виде словаря. >>> for match in re.finditer(r"(?P<name>\w+):(?P<phone>[\d+]+)", text): >>> results.append(match.groupdict()) То есть всё что я сделал, это добавил в начале группы (внутри сбокочек) такую запись: (?P<group-name>...) Теперь найденная группа имеет имя и можно обратиться к ней как к элементу списка >>> name = match['name'] Либо забрать сразу весь словарь методом groupdict() >>> match.groupdict() #tricks#regex

Резултати

Пронајдени 1 слични објави

Пребарај: #elseif

当前筛选 #elseif清除筛选
мобилки at home

@apphomie · Post #100 · 13.03.2018 г., 09:00

Пока сообщество (точнее, хэйтеры) занято обсуждением метода toggle для Bool, в Swift 4.1 появились две директивы: canImport и targetEnvironment, предложенные Эрикой Садун. Попробовать их можно уже сейчас в Xcode 9.3 beta 4. Первая будет полезна для кроссплатформенных решений и позволяет определить, можно ли импортировать тот или иной модуль. #if canImport(UIKit) // UIKit-based code #elseif canImport(Cocoa) // OSX code #elseif // Workaround/text, whatever #endif Вторая директива с единственно возможным аргументом simulator позволяет выполнить условную компиляцию для симулятора или реального девайса. Теперь не нужно перечислять все любимые нам архитектуры и ОС (arch(i386) || arch(x86_64)) && (!os(macOS)), а достаточно будет этого: // Test for a simulator destination #if targetEnvironment(simulator) print("Simulator") #else print("Device") #endif http://ericasadun.com/2018/03/05/new-to-swift-in-xcode-9-3-beta-4-se-0075-and-se-0190-allow-better-configuration-testing/