
Denis
27.10.2016
19:48:22
Если нужно все, наверно, лучше воспользоваться какой-нибудь библиотекой

Темный
27.10.2016
19:48:28
*если они будут в будущем

Zart
27.10.2016
19:48:35
left-pad.io например, ага

Pavel
27.10.2016
19:48:37

Google

Темный
27.10.2016
19:48:46
оставить цифры
в регулярки смотреть?

Pavel
27.10.2016
19:48:56
Правильная постановкп задачи половина решения

Denis
27.10.2016
19:49:42
''.join(i if i.isdigit() else ' ' for i in s )

Zart
27.10.2016
19:49:43
интересно, откуда у них такие наркоманские задачи

Темный
27.10.2016
19:49:57

Pavel
27.10.2016
19:50:18

Zart
27.10.2016
19:50:23
=_=

Темный
27.10.2016
19:50:25
ага, типа того
я у мамы бизнесмен

Denis
27.10.2016
19:54:52
Регулярки медленнее будут

Google

Темный
27.10.2016
19:55:32
тут скорость вообще не важна, скрипт парсит некоторое количество товаров раз в n часов

Denis
27.10.2016
19:56:11
А зачем регулярки?

Темный
27.10.2016
19:56:47
потому что модно?)

Kirill
27.10.2016
19:57:05
ребят, помогите
# coding: utf-8
import re
import os
minus_file=open("minus_file.txt","r",encoding="utf-8")
minus_fl=minus_file.read()
file1=open("in_file.txt","r",encoding="utf-8")
file2=file1.read()
out_names=open("out_names.txt","w")
out1={}
def minus_name(minus_word):
reg_v=re.findall(('\b(.+?)%s(.+?)\b'%(minus_word)),re.IGNORECASE)
reg_vr=re.compile(reg_v)
return(reg_vr)
def chek_name():
for x in file2:
y=re.findall(x,reg_vr)
if not y:
out1.add(x)
else:
continue
for minus_word in minus_fl:
minus_name(str(minus_word))
chek_name()
for x in out1:
out_names.write(x+"\n")
out_file.close()
где я ожибся? вылетает
TypeError: expected string or bytes-like object

Denis
27.10.2016
19:57:06
Так себе причина
Сейчас нейросети в моде вообще-то

Темный
27.10.2016
19:58:05

Denis
27.10.2016
19:58:16
ребят, помогите
# coding: utf-8
import re
import os
minus_file=open("minus_file.txt","r",encoding="utf-8")
minus_fl=minus_file.read()
file1=open("in_file.txt","r",encoding="utf-8")
file2=file1.read()
out_names=open("out_names.txt","w")
out1={}
def minus_name(minus_word):
reg_v=re.findall(('\b(.+?)%s(.+?)\b'%(minus_word)),re.IGNORECASE)
reg_vr=re.compile(reg_v)
return(reg_vr)
def chek_name():
for x in file2:
y=re.findall(x,reg_vr)
if not y:
out1.add(x)
else:
continue
for minus_word in minus_fl:
minus_name(str(minus_word))
chek_name()
for x in out1:
out_names.write(x+"\n")
out_file.close()
где я ожибся? вылетает
TypeError: expected string or bytes-like object
Ты ошибся, когда передал туда, где нужна строка что-то, что строкой не является

Темный
27.10.2016
19:58:57
??

/dev
27.10.2016
20:20:42

Zart
27.10.2016
20:21:10
в данном случае компрехеншен будет шустрее

b0g3r
27.10.2016
20:22:21
reg_v - у тебя должна быть строчкой
ну и вообще в питоне же есть трейсбеки - легко увидеть где произошла ошибка
return()?)
втф)

Kirill
27.10.2016
20:23:47
да, нашел спс, строку не показывало

Levent
27.10.2016
20:27:21
С чего стоит начать изучать питон? Знаю немного - основы и типы данных в плюсах и все.

Kill me pls
27.10.2016
20:27:50

Google

Kill me pls
27.10.2016
20:28:56
НЕ НАСТУПАЙТЕ НА ЗМЕЙКУ!

/dev
27.10.2016
20:46:10
это если
comprehension = ''.join(c if c.isdigit() else ' ' for c in vim)
regex = re.sub('[^\d]', ' ', vim)
Если
comprehension = ' '.join(filter(str.isdigit, vim))
regex = re.sub('[^\d]+', ' ', vim)
то 174ms vs 19ms с выигрышем для регекспов

Zart
27.10.2016
20:52:23
результаты выражений же разные

/dev
27.10.2016
20:52:44
нецифры заменены на пробелы в первом случае
во втором — группы нецифр на один пробел

Zart
27.10.2016
20:54:15
а зачем [^\d] если есть \D ?

/dev
27.10.2016
20:54:32
привычка
да, во втором случае я не то для компрехеншенов написал

Zart
27.10.2016
20:56:48
а замерь-ка
>>> t = ' '*48+'0123456789'+' '*198
>>> vim.translate(t)

/dev
27.10.2016
20:58:15
169ms (за цикл) по 10 циклам

Zart
27.10.2016
20:58:41
надеюсь ты только транслейт меряешь, без генерации константы каждый раз?

/dev
27.10.2016
20:58:57
да

Zart
27.10.2016
20:59:15
думаю шустрее транслейта уже не выйдет

Andrey
27.10.2016
20:59:45
Хотя она достаточно простая

Zart
27.10.2016
21:00:16
разницы почти не будет скорее всего, так как там кэш

Google

/dev
27.10.2016
21:02:34

Zart
27.10.2016
21:02:52
просто \D
без []

/dev
27.10.2016
21:03:35
так же

Andrey
27.10.2016
21:08:35
Это в sre_compile.py, optimize_charset

/dev
27.10.2016
21:11:51
Можно и строку на чанки бить начать и тредам выдавать, затем собирать. За инвалидацией кешей следить, до NUMA добраться. Интересно, до какого предела кто '\D' оптимизировал.

Admin
ERROR: S client not available

Andrey
27.10.2016
21:17:05

Kirill
27.10.2016
22:19:31
подстакажите, как в регулярное выражение добавить переменную?

b0g3r
27.10.2016
22:19:49
в каком смысле

Kirill
27.10.2016
22:22:36
кароч мне надо из файла с никами сохранить только те, которые не содержать в себе слов из файла со стоп словами...
def minus_name(minus_word):
reg_v='(.+?)%s(.+?)\s'%(minus_word)
reg_vr=re.compile(reg_v)
return(reg_vr)
типа этого, только чтобы работало

b0g3r
27.10.2016
22:22:54
а зачем это делать регулярками?

Kirill
27.10.2016
22:23:08
а чем?
если есть способ проще, я с удовольствием им воспользуюсь
=)

b0g3r
27.10.2016
22:25:46
for el in stop_words:
for nick in nicks:
if nick.contains(el):
pass
только el заменить на какое-нибудь более логичное название, которое я не придумал
вместо pass - удалять никнейм из списка

Kirill
27.10.2016
22:27:08
?

Google

Kirill
27.10.2016
22:28:01
а я уже 2 часа с регулярками карячусь =)

b0g3r
27.10.2016
22:29:09
единственное - нужно как-то придумать как удалять из списка значения чтобы не ломать цикл for

Kirill
27.10.2016
22:30:01
добавлять в другой список те что нужны

b0g3r
27.10.2016
22:30:39
тогда наоборот - первый цикл по никам, второй по стоп-словам
можно сделать с помощью for else
for nick in nicks:
for el in stop_words:
if nick.contains(el):
break
else:
clear_nicks.append(nick)
else после for сработает только если for завершится без вызова break, т.е. если for переберет все элементы
а он переберет все элементы стоп-листа если ни одно из них не встречается в нике

Kirill
27.10.2016
22:34:38
?
спс

b0g3r
27.10.2016
22:34:52
что-то непонятно?

Kirill
27.10.2016
22:35:23
понятно
осталось переписать

b0g3r
27.10.2016
22:37:27
можно вынести это в отдельную функцию:
def validate(nick):
for el in stop_words:
if nick.contains(el):
return False
return True
for nick in nicks:
if validate(nick):
clear_nicks.append(nick)

Kirill
27.10.2016
22:49:01
.contains - это из какого модуля? мне пишет что нет такого атрибута у строки.
утро вечера мудренее короче

b0g3r
27.10.2016
23:07:16
так, я соснуле
if el in nick:

Leonid
27.10.2016
23:08:12
Эта группа больше не существует