Форум сайта python.su
0
Имеется список элементов, в котором элемент может быть представлен в двух вариантах.
Квадратный метр - 055
Килограмм - 166
Делаю регулярку для извлечение самого текста, т.е. одного или двух слов до пробела, но никак не получается.
p = re.compile('.*[ ]') t = str(toUtf8(self.unit.currentText())) ite = p.finditer(t) for match in ite: index = match.span() print t print index[0], index[1] print t[index[0]:index[1]]
Офлайн
52
s.split(' - ')
Офлайн
17
В регулярке ‘*’ съедает максимальне число подходящих символов. А вот ‘*?’ - минимальное.
Офлайн
857
>>> import re >>> >>> lines = """ ... Квадратный метр - 055 ... Килограмм - 166 ... Децилитр - 118 ... Квадратный дециметр - 053 ... """ >>> >>> lst = re.findall(r'^(.+)\s+-\s+(\d+)$', lines, re.M) >>> print(lst) [('Квадратный метр', '055'), ('Килограмм', '166'), ('Децилитр', '118'), ('Квадратный дециметр', '053')] >>>
Отредактировано py.user.next (Июнь 21, 2012 02:05:54)
Офлайн