寻找以前缀开头的字符串
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
模式。
希望对您有所帮助!
首先,让我们了解一些事情。
在python中,您可以在read
/write
/append
模式下打开文件。你不能在 read
模式下打开文件然后突然开始写入!这会导致文件操作错误。
针对您的情况,您可以执行以下步骤
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)
这是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
模式。
希望对您有所帮助!
首先,让我们了解一些事情。
在python中,您可以在
read
/write
/append
模式下打开文件。你不能在read
模式下打开文件然后突然开始写入!这会导致文件操作错误。针对您的情况,您可以执行以下步骤
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)