ищем строки, начинающиеся с префиксов

Вот часть файла 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 Режим.

Я надеюсь, это поможет вам!

Во-первых, позвольте понять несколько вещей.

  1. В python вы можете открыть файл в read/write/appendРежим. Вы не можете открыть файл вreadрежим и вдруг начать писать! Это вызывает ошибку работы файла.

  2. В вашем случае вы можете сделать следующие шаги

    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)
Другие вопросы по тегам