Найти - Пользователи
Полная версия: помощь в регулярных выражений(данные между словами)
Начало » Python для новичков » помощь в регулярных выражений(данные между словами)
1 2
ShuraP
У меня есть файл txt Мне нужно данные между словами : SUMMARY и Final results
причем данные из всего файла

 ====================================================================================================================
====================================================================================================================
06/03/18  10:18:23   Recipe: J1_Tool_A500_Intel_approved  Test Number: 1  Objective ID: 217G012-NG  Objective Angle: 0  
# Bicolor Multigrab frames: 8   
# ANRA Frames: 3  
# Dynamic loops: 1  
Acquisition between measurements: 1  
Target Location(um): (-3080,2161)  
Off-Center Vector(um): (0.000000,0.000000)  
Iter	Index	Filter1	Filter2	Box 1	Box 2	OVL X	OVL Y(nm)	Failure
1	1	500 nm	600 nm	Outer	Outer	4.10	-6.50	
1	2	600 nm	700 nm	Outer	Outer	2.40	-5.00	
1	3	400 nm	450 nm	Outer	Outer	3.50	-8.50	
1	4	430 nm	500 nm	Outer	Outer	4.40	-6.80	
1	5	450 nm	550 nm	Outer	Outer	4.50	-7.90	
SUMMARY
========
Index	Filter1	Filter2	<OVLx>	<OVLy>	3sOVLx(DL)	3sOVLy(DL)	3SigX(MG)	3SigY(MG)	Failures
1	500 nm	600 nm	4.10	-6.50	0.00	0.00	2.00	2.10	0
2	600 nm	700 nm	2.40	-5.00	0.00	0.00	2.70	3.20	0
3	400 nm	450 nm	3.50	-8.50	0.00	0.00	2.60	1.30	0
4	430 nm	500 nm	4.40	-6.80	0.00	0.00	4.20	3.10	0
5	450 nm	550 nm	4.50	-7.90	0.00	0.00	3.20	1.80	0
Final results
=============
Max Delta<OVL>x:	8.00	3SigDelta<x>:	12.84	Total Delta<OVL>x:	12.40	Sum Delta<OVL>x:	17.70
Max Delta<OVL>y:	-16.40	3SigDelta<y>:	23.74	Total Delta<OVL>y:	23.20	Sum Delta<OVL>y:	-36.10
====================================================================================================================
====================================================================================================================
06/03/18  10:21:44   Recipe: J1_Tool_A500_Intel_approved  Test Number: 1  Objective ID: 217G012-NG  Objective Angle: 0  
# Bicolor Multigrab frames: 8   
# ANRA Frames: 3  
# Dynamic loops: 1  
Acquisition between measurements: 1  
Target Location(um): (-3080,2161)  
Off-Center Vector(um): (0.000000,0.000000)  
Iter	Index	Filter1	Filter2	Box 1	Box 2	OVL X	OVL Y(nm)	Failure
1	1	500 nm	600 nm	Outer	Outer	3.00	-5.80	
1	2	600 nm	700 nm	Outer	Outer	1.60	-4.00	
1	3	400 nm	450 nm	Outer	Outer	3.30	-7.20	
1	4	430 nm	500 nm	Outer	Outer	3.20	-5.90	
1	5	450 nm	550 nm	Outer	Outer	3.90	-6.30	
SUMMARY
========
Index	Filter1	Filter2	<OVLx>	<OVLy>	3sOVLx(DL)	3sOVLy(DL)	3SigX(MG)	3SigY(MG)	Failures
1	500 nm	600 nm	3.00	-5.80	0.00	0.00	1.50	1.60	0
2	600 nm	700 nm	1.60	-4.00	0.00	0.00	2.50	2.30	0
3	400 nm	450 nm	3.30	-7.20	0.00	0.00	2.70	3.10	0
4	430 nm	500 nm	3.20	-5.90	0.00	0.00	3.40	2.50	0
5	450 nm	550 nm	3.90	-6.30	0.00	0.00	2.70	3.20	0
Final results
=============


зарание спасибо
py.user.next
Здесь принцип разбора показан: сначала надо выделить части из общего текста; затем надо кажду часть разобрать по одному алгоритму.
ShuraP
Спасибо

сегодня 02:56:21 - рано то как

py.user.next
ShuraP
сегодня 02:56:21 - рано то как
У меня день в это время
ShuraP
нузана опъятъ помощъ
мне тепер нызно еще и дата и время

я накропал что то но естественно ето не работает
Почему
 blocks = re.findall(r'(\d{2}/\d{2}/\d{2,4})\s\s(\d{2}:\d{2}:\d{2,4})\s\s(SUMMARY\n=+\n(.*?)\nFinal results)', data, re.DOTALL)

что упустил?
ето первая група
 (\d{2}/\d{2}/\d{2,4})
ето втарая
 (\d{2}:\d{2}:\d{2,4})
и ето третия
 (SUMMARY\n=+\n(.*?)\nFinal results)

py.user.next
Не надо в регулярное выражение добавлять ничего. Просто сделай отдельное регулярное выражение для нахождения даты времени в определённом месте. Ориентируйся по слову Recipe.
ShuraP
я понимаю ,но у меня иногда нет данних после SUMMARY
так я получу толко толко дату
ShuraP
почему картинкы немогу вставитъ?

blocks = re.findall(r'SUMMARY\n=+\n(.*?)\nFinal results', data, re.DOTALL)
blocksData = re.findall(r'(\d{2}/\d{2}/\d{2,4})\s\s(\d{2}:\d{2}:\d{2,4})', data, re.DOTALL)

так по отделности работает
ShuraP

сан сей py.user.next

помоги
 blocks = re.findall(r'SUMMARY\n=+\n(.*?)\nFinal results', data, re.DOTALL)
blocksData = re.findall(r'(\d{2}/\d{2}/\d{2,4})\s\s(\d{2}:\d{2}:\d{2,4})', data, re.DOTALL)
blocks_blocksData = re.findall(r'\d{2}/\d{2}/\d{2,4})\s\s(\d{2}:\d{2}:\d{2,4}|SUMMARY\n=+\n(.*?)\nFinal results', data, re.DOTALL)  #--эта строка уже работает но как то по дикому

py.user.next
Здесь отыскивает ещё и дату-время.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB