Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 14, 2011 07:40:52

Frank
От:
Зарегистрирован: 2011-02-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с регуляркой

Есть файл с таким содержимым:

sssss  1
1
dd.dddddd dd.dddddd
dd.dddddd dd.dddddd
dd.dddddd dd.dddddd
dd.dddddd dd.dddddd
dd.dddddd dd.dddddd
dd.dddddd dd.dddddd
dd.dddddd dd.dddddd
dd.dddddd dd.dddddd
dd.dddddd dd.dddddd
sss sss
sssss ssssss
ssssssss s s s sss
1
dd.dddddd dd.dddddd
dd.dddddd dd.dddddd
dd.dddddd dd.dddddd
dd.dddddd dd.dddddd
sss sss
sssss ssssss
ssssssss s s s ssssss
1
dd.dddddd dd.dddddd
dd.dddddd dd.dddddd
dd.dddddd dd.dddddd
dd.dddddd dd.dddddd
sss sss
sssss ssssss
ssssssss s s s ssss
Мне нужно выцепить все блоки c dd.dddddd dd.dddddd
d - это цифра.
Пока мне удалось вытащить только лишь все dd.dddddd вперемешку, а нужно именно блоками.
Не силён я в регулярках, помогите кто знает:)



Офлайн

#2 Фев. 14, 2011 10:02:48

Studentik
От:
Зарегистрирован: 2009-12-26
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с регуляркой

from PyQt4 import Qt as qt
import sys, re

app = qt.QApplication(sys.argv)
mw = qt.QMainWindow()
fr = qt.QFrame()
lt = qt.QVBoxLayout()
te = qt.QTextEdit()
te2 = qt.QTextEdit()
btn = qt.QPushButton("find")

mw.setCentralWidget(fr)
fr.setLayout(lt)
lt.addWidget(te)
lt.addWidget(te2)
lt.addWidget(btn)

te.setPlainText("""
11.111111 22.222222
aaa
33.333333 44.444444
33.333333 44.444444
bbb
""")

def findre():
text = te.toPlainText()
pattern = r"\d{2}\.\d{6}\s\d{2}\.\d{6}"
text2 = "\n".join(re.findall(pattern, text))
te2.setPlainText(text2)

btn.clicked.connect(findre)

mw.show()
app.exec_()



Офлайн

#3 Фев. 14, 2011 10:14:44

Frank
От:
Зарегистрирован: 2011-02-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с регуляркой

круто! спасибо, Studentik, пойду пробовать.



Офлайн

#4 Фев. 14, 2011 10:49:40

Frank
От:
Зарегистрирован: 2011-02-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с регуляркой

прдробнее изучил код, паттерн у меня был такой \d+\.\d+\s\d+\.\d
твой паттерн выдергивает значения парами, а мне нужно прямо группой. Тоесть каждая группа значений это характеристика объекта, соответственно мне нужно их дернуть не просто парами, а именно группой, а по парам я их потом смогу в цикле разобрать.

Наверное паттерн нужно как-то сгруппировать?



Офлайн

#5 Фев. 14, 2011 11:24:37

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Помогите с регуляркой

Просто обрабатывайте файл построчно. Попала строка под вашу регулярку - начало группы. И пока строки соответствуют регулярке - добавляйте в группу. Как не совпала - сброс и дальше следующую группу начинаете.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#6 Фев. 14, 2011 11:50:33

Frank
От:
Зарегистрирован: 2011-02-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с регуляркой

2 PooH
после долгих экспериментов я тоже пришел к такому решению:)) какой смысл мучить регекспы, когда всё можно сделать просто сравнением и построчной обработкой. Особенно если учесть, что регулярки это не моя сильная сторона)



Офлайн

#7 Фев. 14, 2011 13:58:40

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Помогите с регуляркой

Frank
после долгих экспериментов я тоже пришел к такому решению:)) какой смысл мучить регекспы, когда всё можно сделать просто сравнением и построчной обработкой. Особенно если учесть, что регулярки это не моя сильная сторона)
“Была у программиста проблема, решил он ее при помощи регулярных выражений, теперь у него две проблемы” :)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version