
Johnnie
16.12.2016
09:32:31
словаря

Amaro
16.12.2016
09:32:32
Просто после первой \d вопрос неннада

Zart
16.12.2016
09:32:49
а зачем там вообще опциональная группа?

Johnnie
16.12.2016
09:33:11
> потому что ведущий ноль наверняка не канает
канает патамушто блять есть еще преамбула которая без номера, но там тоже надо дергать все {hui}

Google

Dmitriy
16.12.2016
09:33:12
опциональной должна быть последняя, я предлагал уже

Johnnie
16.12.2016
09:33:21
я ставлю щас туда 0.0
перед ней
надо как-то извратиться с условием ИЛИ для пункта, но не получается пока

Zart
16.12.2016
09:34:24
\d+ - матчим произвольное число
\d+(\.\d+)* - матчим произвольное колво секций 1.2.3.4
'\d+(\.\d+)*\s+' - добавляем пробелы

Johnnie
16.12.2016
09:35:09
\d+(\.\d+)* - матчим произвольное колво секций 1.2.3.4
хммм..
не совсем
хавает всякую дрянь
просто номера тоже хавает

Zart
16.12.2016
09:36:01
ну
а надо чтобы хоть одна точка была?

Johnnie
16.12.2016
09:36:17
Match 1
Full match 105-113 `9276 `
Match 2
Full match 2353-2365 `10002561 `
Match 3
Full match 2367-2372 `1 `
Match 4
Full match 5999-6011 `10002561 `
Match 5
Full match 6013-6018 `2 `

Google

Johnnie
16.12.2016
09:36:31
хотя бы две
либо 1.1. либо 1.1.1.

Zart
16.12.2016
09:37:14
\d+(\.\d+){1,2} - меняем * (произвольное колво секций) на 1-2, плюс одна обязательная

Johnnie
16.12.2016
09:38:57
(\d\.){2,3}
так может?

Zart
16.12.2016
09:39:18
если ты хочешь чтобы точка на конце была - да

Johnnie
16.12.2016
09:39:21
ой
плюс забыл

Dmitriy
16.12.2016
09:39:27

Zart
16.12.2016
09:39:44
ну он имел в виду (\d+\.){2,3}

Johnnie
16.12.2016
09:40:00
([1-9]+\.){2,3}

Zart
16.12.2016
09:40:09
нет

Dmitriy
16.12.2016
09:40:22

Zart
16.12.2016
09:40:38
если не хочешь лидирующих нулей:
([1-9]\d*\.){2,3}

Johnnie
16.12.2016
09:42:40
([1-9]\d*\.){2,3}\s+
работает так

Zart
16.12.2016
09:43:14
победа сил добра над силами разума

Dmitriy
16.12.2016
09:44:30

Google

Johnnie
16.12.2016
09:45:42
{2,3} заменил на +
в 2 раза короче стал :)

Dmitriy
16.12.2016
09:51:11

Johnnie
16.12.2016
09:51:44
блиа

Zart
16.12.2016
09:52:13
да ладно, скопипасти блок
(?:[1-9]\d*\.)(?:[1-9]\d*\.)+\s+

Dmitriy
16.12.2016
09:53:22
{2,3} заменил на +
а если заменишь {2,3} -> {2,} - будет проходить 1.1.1.1
зачем пытаться сделать короче regexp, если он уже нормальный?)

Zart
16.12.2016
09:55:14
а, части вокруг запятой опускать же можно

Johnnie
16.12.2016
09:56:37
preamble_text = r'именуемoe в дальнейшем Продавец'
preamble_text_subst = 'PREAMBLE'
clause_exp = r'(([1-9]\d*\.){2,}\s+)|(%s)' % preamble_text
pick_out_clauses_exp = r'(({clause_exp}).+?(?={clause_exp}))'.format(
clause_exp=clause_exp)
'%s' % somestring - сильно страшно?

Zart
16.12.2016
09:57:07
неверно

Johnnie
16.12.2016
09:57:15
через формат не канает т.к. он видит {2,} и орет про ключ

Zart
16.12.2016
09:57:23
если в этом somestring будут регэксповые символы - будет херня

Dmitriy
16.12.2016
09:57:25
{{}}

Zart
16.12.2016
09:57:27
для этого есть re.escape
r'(?:[1-9]\d*\.){2,}\s+|' + re.escape(sometext)
даже так. чтобы скобочек поменьше

Johnnie
16.12.2016
10:03:04
clause_exp = r'(([1-9]\d*\.){2,}\s+)|' + \
re.escape('{0}'.format(preamble_text))
pick_out_clauses_exp = r'(({clause_exp}).+?(?={clause_exp}))'.format(
clause_exp=clause_exp)
ща попробую вкурить твой эксп

Zart
16.12.2016
10:03:21
'{0}'.format(x) == str(x)
зачем бесмыслиную хуиту делать?

Google

Johnnie
16.12.2016
10:04:00
:D
точно

Zart
16.12.2016
10:04:18
при этом икс у тебя и так строка

Johnnie
16.12.2016
10:04:42
clause_exp = r'(([1-9]\d*\.){2,}\s+)|' + re.escape(preamble_text)
всем спасибо большое еще раз!
я даж боюсь целиком код показывать
тапками закидают
clause_exp = r'(([1-9]\d*\.){2,}\s+)|' + re.escape(preamble_text)
pick_out_clauses_exp = r'(({clause_exp}).+?(?={clause_exp}))'.format(
clause_exp=clause_exp)
здесь формат уже не нужно трогать ведь? т.к. до этого регэксп и так с эскейпом

Admin
ERROR: S client not available

Max
16.12.2016
13:13:13
Ребят а киньте мануал (желательно на русском ) где описывается как работает __str__ , __call__ и т.д

Zart
16.12.2016
13:13:31
нет

Igor
16.12.2016
13:15:36
да лан те, это ж не руде пихтон
запрос "__str__ python site:habrahabr.ru" в гугле творит чудеса!

Zart
16.12.2016
13:17:19
"Замечание от переводчика: svetlov отмечает, что здесь автор ошибается, на самом деле __del__ всегда вызывается по завершении работы интерпретатора."
таки не всегда
и __дел__ не деструктор

Max
16.12.2016
13:18:07

fox.cpp
16.12.2016
13:18:25

Zart
16.12.2016
13:18:51
"составное" - кривой перевод

Google

Zart
16.12.2016
13:22:23
как обзорное туда-сюда, как детальное - херня

Igor
16.12.2016
13:24:12
если нежелательно на русском - https://docs.python.org/2/reference/datamodel.html#special-method-names, полагаю?..

Bulat
16.12.2016
13:26:11
для чего используется и как?
если я пишу: for x in self
то на самом делел в магии вызывается __iter__(self)
или как?

Zart
16.12.2016
13:30:20
там сложнее
сперва вызвается self.__iter__(), который возвращает итератор
потом у этого итератора вызывается i.next() (в тройке - i.__next__())

b0g3r
16.12.2016
13:32:04
Там еще запасной вариант есть, если __iter__ не реализован в объекте

Zart
16.12.2016
13:33:04
ты пишешь код вида
x + y
под капотом это превращается в байткод вида
LOAD_NAME x
LOAD_NAME y
BINARY_ADD
POP_TOP
где BINARY_ADD под тем же капотом преобразует это в вызов
x.__add__(y)
используя слоты

Bulat
16.12.2016
13:34:42
статья запутанная?

b0g3r
16.12.2016
13:35:28
Если хочется про это подробно почитать - тут уже не раз советовали Python К вершинам мастерства
Там довольно неплохо разжевано и на примерах показано
Но к случаю с __unicode__ это очень слабо относится, так как метод совсем не хитрый и ничего интересного не делает
У тебя по-моему просто проблемы с пониманием того, зачем этот метод в джанго модели и где используется, но это вопросы к джанге

Bulat
16.12.2016
13:39:37
в точку ;)

Anton
16.12.2016
15:06:47
помогите пожалуйста с простым скриптом. Суть: считать из файла названия, а потом скопировать все файлы с этим названием из указанной директории (с рекурсией) в другую папку. Встрял в самом начале. http://dl2.joxi.net/drive/2016/12/16/0019/1704/1271464/64/430e0e02c1.jpg Изначально хотел прочесть 2 списка и вывести пересекающиеся значения, а потом уже думать над копированием, но выдает ошибку TypeError: unsupported operand type(s) for +: 'int' and 'str'

Zart
16.12.2016
15:08:11
темносинее на черном в сраном джипеге...
Эта группа больше не существует