Я хочу извлечь определенную информацию из CFT (инструмент для копирования файлов из любой ОС в другую ОС).Я анализирую вывод команды "cftutil listcat content = full"
Я хочу извлечь даты, часы, количество записей в локальном и удаленном файле ...
Для примеров я получаю строкикак
Records NRECS = 49016 Records NREC = 49016
, где я хочу извлечь значение после NRECS или NREC
или строки типа
Begin date DATEB = 15/02/2019 End date DATEE = 15/02/2019
Begin time TIMEB = 12:18:21.05 End time TIMEE = 12:18:23.16
, где я хочу, чтобы дата и час начинались и заканчивалисьпередачи
Мое регулярное выражение получает только первое совпадение в строке
моя программа
import re
reg = r"""
(^.*)DIRECT\s+=\s(?P<direct>[A-Z]{4})
|
(^.*)DATEE\s+=\s(?P<date_end>\d{2}\/\d{2}\/\d{4})
|
(^.*)DATEB\s+=\s(?P<date_deb>\d{2}\/\d{2}\/\d{4})
|
(^.*)TIMEB\s+=\s(?P<hour_deb>\d{2}:\d{2}:\d{2}.\d{2})
|
(^.*)TIMEE\s+=\s(?P<hour_end>\d{2}:\d{2}:\d{2}.\d{2})
|
(^.*)NREC\s+=\s(?P<nb_records_loc>\d+)
|
(^.*)NRECS\s+=\s(?P<nbrecords_rem>\d+)
"""
pat1 = re.compile(reg,re.VERBOSE)
with open("CFT_FULL.TXT","r") as a:
source = a.read().split('\n')
for i, lin in enumerate(source):
if (" FNAME" in lin or " NFNAME" in lin):
print '\n'.join(source[i+1:i+2])
m = re.search(pat1, lin)
if m is not None:
print m.lastgroup, "---> ", m.group(m.lastindex)
if "JOBNAME" in lin :
print lin,'\n'
Редактировать: частичный вывод
date_end ---> 06/02/2019
hour_deb ---> 08:19:48.63
nb_records_loc ---> 139
Но ядолжно иметь
date_deb ---> 06/02/2019
date_end ---> 06/02/2019
hour_deb ---> 08:19:48.63
hour_end ---> 08:19:49.52
Спасибо за любую подсказку
edit
В конце концов, следующий код работает нормально
m = re.search(pat1, lin)
if m is not None:
for x in re.finditer(pat1,lin):
print x.lastgroup,"--->", x.group(x.lastindex)</p>
<p>
печатает
date_deb ---> 06/02/2019
date_end ---> 06/02/2019
hour_deb ---> 08:19:58.64
hour_end ---> 08:19:58.75
nbrecords_rem ---> 62
nbrecords_loc ---> 62