ищем строки, начинающиеся с префиксов
Вот часть файла DXF(я обрезал некоторые части для ясности), его около 5M
\fCalibri|b1|i0|c00|p39;CB537
73
2
44
1.0
1001
ACAD
1000
MTEXTBEGIN
1070
1611.0
30
0.0
40
1.302083
41
0.0
71
1
72
1
1
\fCalibri|b1|i0|c00|p39;Line155
//trim
72
1
1
\fCalibri|b0|i0|c00|p39;120
\fCalibri|b1|i0|c00|p39;Bus459
Мне нужна строка поиска, начинающаяся с префикса "CB" после того, как я ее нашел. Мне нужно найти следующую строку, начинающуюся с "Bus", а затем распечатать ее. В этом файле мне нужно CB537;BUS459
2 ответа
Вы можете использовать регулярное выражение:
\b(CB\d+)(.+?)\b(Bus\d+)
Посмотрите демонстрацию на regex101.com и обратите внимание наsingline
Режим.
Я надеюсь, это поможет вам!
Во-первых, позвольте понять несколько вещей.
В python вы можете открыть файл в
read
/write
/append
Режим. Вы не можете открыть файл вread
режим и вдруг начать писать! Это вызывает ошибку работы файла.В вашем случае вы можете сделать следующие шаги
2.1 Откройте файл в
read
mode и прочтите строку и соберите необходимую информацию, а затем закройте файл.2.2 Повторно откройте этот файл в
append
режим и напишите что хотите
Ниже приведен вспомогательный код для справки.
file_path = 'magic.txt' # Your input file name here
keys = ['CB', 'BUS'] # prefixes you want
values = [None, None] # to store output lines
with open(file_path, 'r') as fp:
i = 0
for line in fp: # efficient for reading huge files
if line.startswith(keys[i]):
values[i] = line
i += 1
if i == len(keys):
# found all required lines, no need read any further
break
# Do you processing here
# ..
# ..
# How to append to file
append_data = ['Output this']
with open(file_path, 'a') as fp:
fp.writelines(append_data)