寻找以前缀开头的字符串

looking for strings starting with prefixes

这是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

您可以使用正则表达式:

\b(CB\d+)(.+?)\b(Bus\d+)

参见a demo on regex101.com并注意singline模式。

希望对您有所帮助!

首先,让我们了解一些事情。

  1. 在python中,您可以在read/write/append模式下打开文件。你不能在 read 模式下打开文件然后突然开始写入!这会导致文件操作错误。

  2. 针对您的情况,您可以执行以下步骤

    2.1 以read方式打开文件,逐行读取并收集所需信息,然后关闭文件。

    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)