На этот вопрос уже есть ответ здесь:
Возможно, указано как дубликат. спасибо за принятие
ORDER ALPHA Facility: 201 ZZZ COUNTRY Wrong Trace: Kotak: NA Soak: NA NOUN: XP O O O O O O O O O O O O O O O O O O O O O O O O O O O O LAM AMO ORDER # P/P R O L H S C N D K M D D C N LAM uii ii oo --- -------- --- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- --- -- -- BZ90rty K/K AA AA AA NA XP AP NA NA NA NA NA NA AP AP OOL XP IP N a ZX A/A WD WD WD NA WD WD NA NA NA NA NA NA WD WD OOL WD IP Y ORDER BURY Facility: 201 ZZZ COUNTRY Wrong Trace: Kotak: NA Soak: NA NOUN: XP O O O O O O O O O O O O O O O O O O O O O O O O O O O O LAM AMO ORDER # P/P R O L H S C N D K M D D C N LAM uii ii oo --- -------- --- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- --- -- -- BZ903901 A/A AA AA AA NA XP AP NA NA NA NA NA NA AP AP OOL XP IP N a ZX A/A WD WD WD NA WD WD NA NA NA NA NA NA WD WD OOL WD IP Y ORDER ALUIO Facility: 201 ZZZ COUNTRY Wrong Trace: Kotak: NA PAT: NA NOUN: AP O O O O O O O O O O O O O O O O O O O O O O O O O O O O LAM AMO ORDER # P/P R O L H S C N D K M D D C N LAM uii ii oo --- -------- --- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- --- -- -- BZ903901 U/U AA AA AA NA XP AP NA NA NA NA NA NA AP AP OOL XP IP N a ZX Y/Y WD WD WD NA WD WD NA NA NA NA NA NA WD WD OOL WD IP Y ORDER AL123 ...cont....
Отобразить или удалить или перенаправить весь ORDER в ORDER данные последней строки перед началом нового заказа, если эти фильтры удовлетворяют, условие 1:IF NOUN :XP и A/A выше A/A присутствует удалить этот заказ или разобрать в другой файл. Условие 2:IF NOUN :AP и Y/Y выше U/U есть удалить этот ордер или разобрать в другой файл.Удаленный выход выглядит как
ORDER ALPHA Facility: 201 ZZZ COUNTRY Wrong Trace: Kotak: NA Soak: NA NOUN: XP O O O O O O O O O O O O O O O O O O O O O O O O O O O O LAM AMO ORDER # P/P R O L H S C N D K M D D C N LAM uii ii oo --- -------- --- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- --- -- -- BZ90rty K/K AA AA AA NA XP AP NA NA NA NA NA NA AP AP OOL XP IP N a ZX A/A WD WD WD NA WD WD NA NA NA NA NA NA WD WD OOL WD IP Y
Как это много условий есть я буду добавлять условия на свой собственный, но это некоторые условия я разместил...... ПРИМЕЧАНИЕ:Строки динамические и ORDER **** (***)может быть любой буквой, но ORDER постоянный.
Это может быть сделано путем деления и завоевания текста. Сценарий Python ниже делает точно, что - он читает файл линию за линией, собирая все строки, связанные с порядком, и затем передает ту информацию функции, которая анализирует каждый порядок определить, должен ли он быть распечатан. В то время как немного подробный, это работает справедливо прилично, хотя это - эффективно два вложенные циклы, которые, вероятно, дадут O (n^2) производительность.
#!/usr/bin/env python
import sys
def parse_order(order,order_lines):
flag1 = False
flag2 = False
xp_counter = 0
ap_counter = 0
for line in order_lines:
if 'Wrong Trace:' in line:
words = line.split()
if 'NOUN:' in words[-2] and 'XP' in words[-1]:
flag1 = True
continue
if 'NOUN:' in words[-2] and 'AP' in words[-1]:
flag2 = True
continue
if flag1 and 'A/A' in line: xp_counter += 1
if flag2 and ( 'Y/Y' in line or 'U/U' in line):
ap_counter += 1
if xp_counter == 2 or ap_counter == 2:
return
print("".join([order]+order_lines))
def main():
buffer=[]
last_order = None
with open(sys.argv[1]) as fp:
for line in fp:
if line.startswith('ORDER'):
current_order = line
if not last_order:
last_order = current_order
continue
parse_order(last_order,buffer)
last_order = current_order
buffer = []
continue
buffer.append(line)
parse_order(last_order,buffer)
if __name__ == '__main__': main()
Сценарий был протестирован с немного измененным входным файлом от OP. Поскольку Вы видите ниже, BURY
и ALUIO
пропускаются:
$ ./parse_orders.py input.txt
ORDER ALPHA
Facility: 201 ZZZ COUNTRY
Wrong Trace: Kotak: NA Soak: NA NOUN: XP
O O O O O O O O O O O O O O
O O O O O O O O O O O O O O LAM
AMO ORDER # P/P R O L H S C N D K M D D C N LAM uii ii oo
--- -------- --- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- --- -- --
BZ90rty K/K AA AA AA NA XP AP NA NA NA NA NA NA AP AP OOL XP IP N
a ZX A/A WD WD WD NA WD WD NA NA NA NA NA NA WD WD OOL WD IP Y
ORDER GAMMA
Facility: 201 ZZZ COUNTRY
Wrong Trace: Kotak: NA Soak: NA NOUN: XP
O O O O O O O O O O O O O O
O O O O O O O O O O O O O O LAM
AMO ORDER # P/P R O L H S C N D K M D D C N LAM uii ii oo
--- -------- --- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- --- -- --
BZ90rty K/K AA AA AA NA XP AP NA NA NA NA NA NA AP AP OOL XP IP N
a ZX A/A WD WD WD NA WD WD NA NA NA NA NA NA WD WD OOL WD IP Y