Форум сайта python.su
0
Есть такой кусок:
slovo("slovo2","lalala123",{tut.nenugnaja:baida})
'slovo2': 'lalala123'
rex = re.compile(r'(tut_regularka)') acc = [d[2] for d in rex.findall(g.response.body)] slovar = dict([a.split(',', 1) for a in acc])
Офлайн
103
>>> s = 'slovo("slovo2","lalala123",{tut.nenugnaja:baida})' >>> rex = re.compile(r'"\w+"') >>> rex.findall(s) ['"slovo2"', '"lalala123"']
Отредактировано terabayt (Июль 13, 2014 02:57:04)
Офлайн
221
terabayt
а если пробел будет в выражении по ковычками? Тогда полагаю нужно что то подобное или несколкьо иное
rex = re.compile(r'".*"')
Офлайн
103
JOHN_16
в описании об этом ничего не говорилось, а в примере не было слов с пробелами. я подумал что так нужно, может это еще и проверка.
какое описание проблемы и примеры, такой и ответ.
Офлайн
0
Я поспешил с примером, написал не точно. Сори.
В
slovo("slovo2","lalala123",{tut.nenugnaja:baida})
Отредактировано gelius (Июль 13, 2014 09:59:27)
Офлайн
103
ну если slovo и slovo2 всегда одинаковы, то регулярки использовать не эффективно. лучше так
>>> s = 'slovo("slovo2","lalala123",{tut.nenugnaja:baida})' >>> a = s[16: s.find('"', 16)] #вот здесь нужно поменять >>> a 'lalala123'
Офлайн
0
Не вариант, ибо
slovo("slovo2","lalala123",{tut.nenugnaja:baida})
Офлайн
103
ааааааааааааа, я уже задолбался угадывать. пусть вам экстрасенсы отвечают!
Офлайн
857
>>> import re >>> >>> s = """ ... ... slovo("slovo2","lalala123",{tut.nenugnaja:baida}) ... ... """ >>> >>> pat = r'\sslovo\("([^"]*)"\s*,\s*"([^"]*)"\s*,' >>> >>> match = re.search(pat, s) >>> kv = match and match.groups() >>> >>> kv ('slovo2', 'lalala123') >>>
>>> import re >>> >>> s = """ ... ... slovo("slovo2","lalala123",{tut.nenugnaja:baida}) ... ... """ >>> >>> pat = r""" ... \s # whitespace before ... slovo\( # start ... ... " # dquote open ... ([^"]*) # all in quotes ... " # dquote close ... ... \s* # optional whitespace ... , # comma ... \s* # optional whitespace ... ... " # dquote open ... ([^"]*) # all in quotes ... " # dquote close ... ... \s* # optional whitespace ... , # end comma ... """ >>> >>> match = re.search(pat, s, re.X) >>> kv = match and match.groups() >>> >>> kv ('slovo2', 'lalala123') >>>
Отредактировано py.user.next (Июль 13, 2014 21:18:45)
Офлайн
0
Не получается конвертировать в словарь:
kv = dict(kv) ValueError: dictionary update sequence element #0 has length 12; 2 is required
Офлайн